From 6c12e29e0a4c9cfeb4f1344b700fb77c6250e255 Mon Sep 17 00:00:00 2001 From: Daniel Dybing Date: Wed, 21 Jan 2026 13:35:47 +0100 Subject: [PATCH] feat: implement remaining G0 character sets (IT, FR, ES/PT, TR) --- src/teletext/charsets.py | 48 +++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/src/teletext/charsets.py b/src/teletext/charsets.py index 564f0d6..7455290 100644 --- a/src/teletext/charsets.py +++ b/src/teletext/charsets.py @@ -29,17 +29,49 @@ GERMAN = { 0x7B: 'ä', 0x7C: 'ö', 0x7D: 'ü', 0x7E: 'ß' } +# Italian - Option 011 (3) +ITALIAN = { + 0x23: '£', 0x24: '$', 0x40: 'é', + 0x5B: '°', 0x5C: 'ç', 0x5D: '→', 0x5E: '↑', + 0x5F: '#', 0x60: 'ù', + 0x7B: 'à', 0x7C: 'ò', 0x7D: 'è', 0x7E: 'ì' +} + +# French - Option 100 (4) +FRENCH = { + 0x23: 'é', 0x24: 'ï', 0x40: 'à', + 0x5B: 'ë', 0x5C: 'ê', 0x5D: 'ù', 0x5E: 'î', + 0x5F: '#', 0x60: 'è', + 0x7B: 'â', 0x7C: 'ô', 0x7D: 'û', 0x7E: 'ç' +} + +# Portuguese/Spanish - Option 101 (5) +PORTUGUESE_SPANISH = { + 0x23: 'Ç', 0x24: '$', 0x40: '¡', + 0x5B: 'á', 0x5C: 'é', 0x5D: 'í', 0x5E: 'ó', + 0x5F: 'ú', 0x60: '¿', + 0x7B: 'ü', 0x7C: 'ñ', 0x7D: 'è', 0x7E: 'à' +} + +# Turkish - Option 110 (6) +TURKISH = { + 0x23: 'ğ', 0x24: 'Ğ', 0x40: 'İ', + 0x5B: 'Ş', 0x5C: 'Ö', 0x5D: 'Ç', 0x5E: 'Ü', + 0x5F: 'ğ', 0x60: 'ç', + 0x7B: 'ş', 0x7C: 'ö', 0x7D: 'ü', 0x7E: 'ı' +} + # We can add more as needed. SETS = [ - ENGLISH, # 000 - GERMAN, # 001 - SWEDISH_FINNISH, # 010 - ENGLISH, # Italian (011) - placeholder - ENGLISH, # French (100) - placeholder - ENGLISH, # Portuguese/Spanish (101) - placeholder - ENGLISH, # Turkish (110) - placeholder - ENGLISH, # Romania (111) - placeholder + ENGLISH, # 000 + GERMAN, # 001 + SWEDISH_FINNISH, # 010 + ITALIAN, # 011 + FRENCH, # 100 + PORTUGUESE_SPANISH, # 101 + TURKISH, # 110 + ENGLISH, # 111 (Romania placeholder) ] def get_char(byte_val, subset_idx):