UChr$ - SMcNeill - 06-27-2024
Code: (Select All)
| SCREEN _NEWIMAGE(640, 480, 32)
| | f = _LOADFONT("arial.ttf", 16)
| | _FONT f
| |
| | _MAPUNICODE 937 TO 3
| |
| | omega$ = UChr$(937, 0): PRINT omega$
| | omega2$ = UChr$(937, 8): _UPRINTSTRING (0, 30), omega2$, , 8
| | omega3$ = UChr$(937, 16): _UPRINTSTRING (0, 60), omega3$, , 16
| | omega4$ = UChr$(937, 32): _UPRINTSTRING (0, 90), omega4$, , 32
| |
| | FUNCTION UChr$ (codepoint AS LONG, encoding AS LONG)
| | SELECT CASE encoding
| | CASE 0: UChr = CPtoASCII(codepoint)
| | CASE 8: UChr = CPto8(codepoint)
| | CASE 16: UChr = CPto16(codepoint)
| | CASE 32: UChr = CPto32(codepoint)
| | END SELECT
| | END FUNCTION
| |
| | FUNCTION CPto16$ (codepoint AS LONG)
| | SELECT CASE codepoint
| | CASE IS <= &HFFFF&& 'use a single codepoint
| | temp$ = MKI$(codepoint)
| | CASE ELSE 'uses 2 code points
| | DIM highSurrogate AS LONG, lowSurrogate AS LONG
| | highSurrogate = &HD800 + ((codepoint - &H10000) \ &H400)
| | lowSurrogate = &HDC00 + ((codepoint - &H10000) MOD &H400)
| | temp$ = MKI$(highSurrogate) + MKI$(lowSurrogate)
| | END SELECT
| | CPto16 = temp$
| | END FUNCTION
| |
| |
| |
| | FUNCTION CPto8$ (codepoint AS LONG)
| | SELECT CASE codepoint
| | CASE IS <= &H7F&&
| | temp$ = CHR$(codepoint)
| | CASE IS <= &H7FF&&
| | temp$ = CHR$(&HC0 OR _SHR(codepoint, 6))
| | temp$ = temp$ + CHR$(&H80 + (codepoint AND &H3F))
| | CASE IS <= &HFFFF&&
| | temp$ = CHR$(&HE0 OR _SHR(codepoint, 12))
| | temp$ = temp$ + CHR$(&H80 OR (_SHR(codepoint, 6) AND &H3F))
| | temp$ = temp$ + CHR$(&H80 + (codepoint AND &H3F))
| | CASE IS <= &H10FFFF&&
| | temp$ = CHR$(&HF0 OR _SHR(codepoint, 18))
| | temp$ = temp$ + CHR$(&H80 OR _SHR(codepoint, 12) AND &H3F)
| | temp$ = temp$ + CHR$(&H80 OR (_SHR(codepoint, 6) AND &H3F))
| | temp$ = temp$ + CHR$(&H80 + (codepoint AND &H3F))
| | END SELECT
| | CPto8 = temp$
| | END FUNCTION
| |
| | FUNCTION CPto32$ (codepoint AS LONG)
| | CPto32$ = MKL$(codepoint)
| | END FUNCTION
| |
| | FUNCTION CPtoASCII$ (codepoint AS LONG)
| | FOR i = 0 TO 255
| | IF _MAPUNICODE(i) = codepoint THEN CPtoASCII$ = CHR$(i): EXIT FUNCTION
| | NEXT
| | END FUNCTION
|
The above is a simple routine to allow one to use unicode values in their programs. As long as you know the code value (there's unicode charts, just as there's ASCII charts which give this information), you can insert that symbol into your own strings and print it.
Note: This will only return the ASCII character to you, if that unicode symbol is currently part of your ASCII character set. Otherwise you'll just get back a blank string as a response ("").
Note2: You have to specify what type of formatting you're using, so it can convert that numeric value to the proper encoded format for you.
|