Both TTL and CMOS logic define voltage levels, not currents. That is enough, btw, because if you can't drive the current you need at 5V, you will not be at 5V....
You can build TTL compatible logic with NPN/PNP -- that's where the name originally comes from. But it's hard to build CMOS compatible logic with NPN/PNP, tpyically the high output isn't high enough for CMOS spec. It is not hard to build TTL compatible inputs with CMOS technology, though. For example the 74HCT series, which has TTL compatible inputs, but is CMOS technology, compared to the 74HC series. CMOS outputs are always compatible with TTL inputs (assuming same supply voltage).
You can build TTL compatible logic with NPN/PNP -- that's where the name originally comes from. But it's hard to build CMOS compatible logic with NPN/PNP, tpyically the high output isn't high enough for CMOS spec. It is not hard to build TTL compatible inputs with CMOS technology, though. For example the 74HCT series, which has TTL compatible inputs, but is CMOS technology, compared to the 74HC series. CMOS outputs are always compatible with TTL inputs (assuming same supply voltage).