1#!/usr/bin/env python 2 3from plasTeX import Command, Environment, log 4 5# Map of CJK encoding names to Python encoding names 6encodings = { 7 'Bg5': 'big5', 8 'GB': '', 9 'GBt': '', 10 'JIS': 'euc_jp', 11 'SJIS': 'shift_jis', 12 'KS': '', 13 'UTF8': 'utf_8', 14} 15 16class CJK(Environment): 17 args = '* [ fontencoding ] encoding args' 18 19class CJKchar(Command): 20 args = '[ encoding:str ] char1:int char2:int' 21 @property 22 def str(self): 23 a = self.attributes 24 enc = encodings[a['encoding'].strip()] 25 if not enc: 26 log.warning('Unknown encoding: %s' % a['encoding']) 27 raise AttributeError('str') 28 return str(chr(a['char1'])+chr(a['char2'])).encode(enc) 29 30class Str(Command): 31 args = 'char1:int char2:int' 32 @property 33 def str(self): 34 return chr(a['char1'])+chr(a['char2']) 35 36class CJKcaption(Command): 37 args = 'caption:str' 38 39class CKJenc(Command): 40 args = 'encoding:str' 41 42class CJKfamily(Command): 43 args = 'family:str' 44 45class CJKencfamily(Command): 46 args = '[ fontencoding:str ] encoding:str family:str' 47 48class CJKfontenc(Command): 49 args = 'encoding:str fontencoding:str' 50 51class CJKkern(Command): 52 pass 53 54class CJKglue(Command): 55 pass 56 57class CJKtilde(Command): 58 pass 59 60class nbs(Command): 61 pass 62 63class standardtilde(Command): 64 pass 65 66class CJKspace(Command): 67 pass 68 69class CJKnospace(Command): 70 pass 71 72class CJKhanja(Command): 73 pass 74 75class CJKhanjul(Command): 76 pass 77 78class CJKtolerance(Command): 79 pass 80 81class CJKuppercase(Command): 82 pass 83 84class Bg5text(Environment): 85 pass 86 87class SJIStext(Environment): 88 pass 89 90class CJKCJKchar(Command): 91 pass 92 93class CJKhangulchar(Command): 94 pass 95 96class CJKlatinchar(Command): 97 pass 98 99class CJKbold(Command): 100 pass 101 102class CJKnormal(Command): 103 pass 104 105class CJKsymbol(Command): 106 pass 107 108class CJKsymbols(Command): 109 pass 110 111class CJKboldshift(Command): 112 pass 113 114class CJKaddEncHook(Command): 115 args = 'encoding:str body' 116