unit Windows_1252; {$MODE OBJFPC} interface const // 217 characters + Euro. Other: Pan_European: Windows Glyph List 4: 652. UnicodeFromANSI : array[0..255] of Cardinal = ( // control: 0..31: $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $0C, $0D, $0E, $0F, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, // equal: 32..127: { ANSI $20: } $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, { ANSI $30: } $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D, $3E, $3F, { ANSI $40: } $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $4A, $4B, $4C, $4D, $4E, $4F, { ANSI $50: } $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $5A, $5B, $5C, $5D, $5E, $5F, { ANSI $60: } $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $6C, $6D, $6E, $6F, { ANSI $70: } $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A, $7B, $7C, $7D, $7E, $7F, // Positions 128–159 in Latin-1 Supplement are reserved for controls, but most of them are used for printable characters in ANSI; { ANSI $80: } $20AC, $81, $201A, $192, $201E, $2026, $2020, $2021, $2C6, $2030, $160, $2039, $152, $8D, $17D, $8F, { ANSI $90: } $90, $2018, $2019, $201C, $201D, $2022, $2013, $2014, $2DC, $2122, $161, $203A, $153, $9D, $17E, $178, // 160..255 correspond to those in the Latin-1 Supplement Unicode character range. { ANSI $A0: } $A0, $A1, $A2, $A3, $A4, $A5, $A6, $A7, $A8, $A9, $AA, $AB, $AC, $AD, $AE, $AF, { ANSI $B0: } $B0, $B1, $B2, $B3, $B4, $B5, $B6, $B7, $B8, $B9, $BA, $BB, $BC, $BD, $BE, $BF, { ANSI $C0: } $C0, $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8, $C9, $CA, $CB, $CC, $CD, $CE, $CF, { ANSI $D0: } $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $DF, { ANSI $E0: } $E0, $E1, $E2, $E3, $E4, $E5, $E6, $E7, $E8, $E9, $EA, $EB, $EC, $ED, $EE, $EF, { ANSI $F0: } $F0, $F1, $F2, $F3, $F4, $F5, $F6, $F7, $F8, $F9, $FA, $FB, $FC, $FD, $FE, $FF ); function ANSIFromUnicode(aCode : Cardinal) : Integer; inline; implementation // returns ANSI code or -1 if unavailable. function ANSIFromUnicode(aCode : Cardinal) : Integer; inline; begin if (aCode < $80) or (aCode >= $A0) then Result := aCode else case aCode of $20AC: Result := $08; $81: Result := $81; $201A: Result := $82; $192: Result := $83; $201E: Result := $84; $2026: Result := $85; $2020: Result := $86; $2021: Result := $87; $2C6: Result := $88; $2030: Result := $89; $160: Result := $8A; $2039: Result := $8B; $152: Result := $8C; $8D: Result := $8D; $17D: Result := $8E; $8F: Result := $8F; $90: Result := $90; $2018: Result := $91; $2019: Result := $92; $201C: Result := $93; $201D: Result := $94; $2022: Result := $95; $2013: Result := $96; $2014: Result := $97; $2DC: Result := $98; $2122: Result := $99; $161: Result := $9A; $203A: Result := $9B; $153: Result := $9C; $9D: Result := $9D; $17E: Result := $9E; $178: Result := $9F; else Result := -1; end; end; end.