mirror of
https://github.com/Kozea/WeasyPrint.git
synced 2024-10-05 00:21:15 +03:00
2c919858c8
The module was too long, and the font management was split into two different modules. We now have everything in the "text" module.
382 lines
7.4 KiB
Python
382 lines
7.4 KiB
Python
"""
|
|
weasyprint.text.constants
|
|
-------------------------
|
|
|
|
Constants used for text layout.
|
|
|
|
"""
|
|
|
|
from .ffi import pango
|
|
|
|
# Pango features
|
|
PANGO_STYLE = {
|
|
'normal': pango.PANGO_STYLE_NORMAL,
|
|
'oblique': pango.PANGO_STYLE_OBLIQUE,
|
|
'italic': pango.PANGO_STYLE_ITALIC,
|
|
}
|
|
PANGO_STRETCH = {
|
|
'ultra-condensed': pango.PANGO_STRETCH_ULTRA_CONDENSED,
|
|
'extra-condensed': pango.PANGO_STRETCH_EXTRA_CONDENSED,
|
|
'condensed': pango.PANGO_STRETCH_CONDENSED,
|
|
'semi-condensed': pango.PANGO_STRETCH_SEMI_CONDENSED,
|
|
'normal': pango.PANGO_STRETCH_NORMAL,
|
|
'semi-expanded': pango.PANGO_STRETCH_SEMI_EXPANDED,
|
|
'expanded': pango.PANGO_STRETCH_EXPANDED,
|
|
'extra-expanded': pango.PANGO_STRETCH_EXTRA_EXPANDED,
|
|
'ultra-expanded': pango.PANGO_STRETCH_ULTRA_EXPANDED,
|
|
}
|
|
PANGO_WRAP_MODE = {
|
|
'WRAP_WORD': pango.PANGO_WRAP_WORD,
|
|
'WRAP_CHAR': pango.PANGO_WRAP_CHAR,
|
|
'WRAP_WORD_CHAR': pango.PANGO_WRAP_WORD_CHAR
|
|
}
|
|
|
|
# Language system tags
|
|
# From https://docs.microsoft.com/typography/opentype/spec/languagetags
|
|
LST_TO_ISO = {
|
|
'aba': 'abq',
|
|
'afk': 'afr',
|
|
'afr': 'aar',
|
|
'agw': 'ahg',
|
|
'als': 'gsw',
|
|
'alt': 'atv',
|
|
'ari': 'aiw',
|
|
'ark': 'mhv',
|
|
'ath': 'apk',
|
|
'avr': 'ava',
|
|
'bad': 'bfq',
|
|
'bad0': 'bad',
|
|
'bag': 'bfy',
|
|
'bal': 'krc',
|
|
'bau': 'bci',
|
|
'bch': 'bcq',
|
|
'bgr': 'bul',
|
|
'bil': 'byn',
|
|
'bkf': 'bla',
|
|
'bli': 'bal',
|
|
'bln': 'bjt',
|
|
'blt': 'bft',
|
|
'bmb': 'bam',
|
|
'bri': 'bra',
|
|
'brm': 'mya',
|
|
'bsh': 'bak',
|
|
'bti': 'btb',
|
|
'chg': 'sgw',
|
|
'chh': 'hne',
|
|
'chi': 'nya',
|
|
'chk': 'ckt',
|
|
'chk0': 'chk',
|
|
'chu': 'chv',
|
|
'chy': 'chy',
|
|
'cmr': 'swb',
|
|
'crr': 'crx',
|
|
'crt': 'crh',
|
|
'csl': 'chu',
|
|
'csy': 'ces',
|
|
'dcr': 'cwd',
|
|
'dgr': 'doi',
|
|
'djr': 'dje',
|
|
'djr0': 'djr',
|
|
'dng': 'ada',
|
|
'dnk': 'din',
|
|
'dri': 'prs',
|
|
'dun': 'dng',
|
|
'dzn': 'dzo',
|
|
'ebi': 'igb',
|
|
'ecr': 'crj',
|
|
'edo': 'bin',
|
|
'erz': 'myv',
|
|
'esp': 'spa',
|
|
'eti': 'est',
|
|
'euq': 'eus',
|
|
'evk': 'evn',
|
|
'evn': 'eve',
|
|
'fan': 'acf',
|
|
'fan0': 'fan',
|
|
'far': 'fas',
|
|
'fji': 'fij',
|
|
'fle': 'vls',
|
|
'fne': 'enf',
|
|
'fos': 'fao',
|
|
'fri': 'fry',
|
|
'frl': 'fur',
|
|
'frp': 'frp',
|
|
'fta': 'fuf',
|
|
'gad': 'gaa',
|
|
'gae': 'gla',
|
|
'gal': 'glg',
|
|
'gaw': 'gbm',
|
|
'gil': 'niv',
|
|
'gil0': 'gil',
|
|
'gmz': 'guk',
|
|
'grn': 'kal',
|
|
'gro': 'grt',
|
|
'gua': 'grn',
|
|
'hai': 'hat',
|
|
'hal': 'flm',
|
|
'har': 'hoj',
|
|
'hbn': 'amf',
|
|
'hma': 'mrj',
|
|
'hnd': 'hno',
|
|
'ho': 'hoc',
|
|
'hri': 'har',
|
|
'hye0': 'hye',
|
|
'ijo': 'ijc',
|
|
'ing': 'inh',
|
|
'inu': 'iku',
|
|
'iri': 'gle',
|
|
'irt': 'gle',
|
|
'ism': 'smn',
|
|
'iwr': 'heb',
|
|
'jan': 'jpn',
|
|
'jii': 'yid',
|
|
'jud': 'lad',
|
|
'jul': 'dyu',
|
|
'kab': 'kbd',
|
|
'kab0': 'kab',
|
|
'kac': 'kfr',
|
|
'kal': 'kln',
|
|
'kar': 'krc',
|
|
'keb': 'ktb',
|
|
'kge': 'kat',
|
|
'kha': 'kjh',
|
|
'khk': 'kca',
|
|
'khs': 'kca',
|
|
'khv': 'kca',
|
|
'kis': 'kqs',
|
|
'kkn': 'kex',
|
|
'klm': 'xal',
|
|
'kmb': 'kam',
|
|
'kmn': 'kfy',
|
|
'kmo': 'kmw',
|
|
'kms': 'kxc',
|
|
'knr': 'kau',
|
|
'kod': 'kfa',
|
|
'koh': 'okm',
|
|
'kon': 'ktu',
|
|
'kon0': 'kon',
|
|
'kop': 'koi',
|
|
'koz': 'kpv',
|
|
'kpl': 'kpe',
|
|
'krk': 'kaa',
|
|
'krm': 'kdr',
|
|
'krn': 'kar',
|
|
'krt': 'kqy',
|
|
'ksh': 'kas',
|
|
'ksh0': 'ksh',
|
|
'ksi': 'kha',
|
|
'ksm': 'sjd',
|
|
'kui': 'kxu',
|
|
'kul': 'kfx',
|
|
'kuu': 'kru',
|
|
'kuy': 'kdt',
|
|
'kyk': 'kpy',
|
|
'lad': 'lld',
|
|
'lah': 'bfu',
|
|
'lak': 'lbe',
|
|
'lam': 'lmn',
|
|
'laz': 'lzz',
|
|
'lcr': 'crm',
|
|
'ldk': 'lbj',
|
|
'lma': 'mhr',
|
|
'lmb': 'lif',
|
|
'lmw': 'ngl',
|
|
'lsb': 'dsb',
|
|
'lsm': 'smj',
|
|
'lth': 'lit',
|
|
'luh': 'luy',
|
|
'lvi': 'lav',
|
|
'maj': 'mpe',
|
|
'mak': 'vmw',
|
|
'man': 'mns',
|
|
'map': 'arn',
|
|
'maw': 'mwr',
|
|
'mbn': 'kmb',
|
|
'mch': 'mnc',
|
|
'mcr': 'crm',
|
|
'mde': 'men',
|
|
'men': 'mym',
|
|
'miz': 'lus',
|
|
'mkr': 'mak',
|
|
'mle': 'mdy',
|
|
'mln': 'mlq',
|
|
'mlr': 'mal',
|
|
'mly': 'msa',
|
|
'mnd': 'mnk',
|
|
'mng': 'mon',
|
|
'mnk': 'man',
|
|
'mnx': 'glv',
|
|
'mok': 'mdf',
|
|
'mon': 'mnw',
|
|
'mth': 'mai',
|
|
'mts': 'mlt',
|
|
'mun': 'unr',
|
|
'nan': 'gld',
|
|
'nas': 'nsk',
|
|
'ncr': 'csw',
|
|
'ndg': 'ndo',
|
|
'nhc': 'csw',
|
|
'nis': 'dap',
|
|
'nkl': 'nyn',
|
|
'nko': 'nqo',
|
|
'nor': 'nob',
|
|
'nsm': 'sme',
|
|
'nta': 'nod',
|
|
'nto': 'epo',
|
|
'nyn': 'nno',
|
|
'ocr': 'ojs',
|
|
'ojb': 'oji',
|
|
'oro': 'orm',
|
|
'paa': 'sam',
|
|
'pal': 'pli',
|
|
'pap': 'plp',
|
|
'pap0': 'pap',
|
|
'pas': 'pus',
|
|
'pgr': 'ell',
|
|
'pil': 'fil',
|
|
'plg': 'pce',
|
|
'plk': 'pol',
|
|
'ptg': 'por',
|
|
'qin': 'bgr',
|
|
'rbu': 'bxr',
|
|
'rcr': 'atj',
|
|
'rms': 'roh',
|
|
'rom': 'ron',
|
|
'roy': 'rom',
|
|
'rsy': 'rue',
|
|
'rua': 'kin',
|
|
'sad': 'sck',
|
|
'say': 'chp',
|
|
'sek': 'xan',
|
|
'sel': 'sel',
|
|
'sgo': 'sag',
|
|
'sgs': 'sgs',
|
|
'sib': 'sjo',
|
|
'sig': 'xst',
|
|
'sks': 'sms',
|
|
'sky': 'slk',
|
|
'sla': 'scs',
|
|
'sml': 'som',
|
|
'sna': 'seh',
|
|
'sna0': 'sna',
|
|
'snh': 'sin',
|
|
'sog': 'gru',
|
|
'srb': 'srp',
|
|
'ssl': 'xsl',
|
|
'ssm': 'sma',
|
|
'sur': 'suq',
|
|
'sve': 'swe',
|
|
'swa': 'aii',
|
|
'swk': 'swa',
|
|
'swz': 'ssw',
|
|
'sxt': 'ngo',
|
|
'taj': 'tgk',
|
|
'tcr': 'cwd',
|
|
'tgn': 'ton',
|
|
'tgr': 'tig',
|
|
'tgy': 'tir',
|
|
'tht': 'tah',
|
|
'tib': 'bod',
|
|
'tkm': 'tuk',
|
|
'tmn': 'tem',
|
|
'tna': 'tsn',
|
|
'tne': 'enh',
|
|
'tng': 'toi',
|
|
'tod': 'xal',
|
|
'tod0': 'tod',
|
|
'trk': 'tur',
|
|
'tsg': 'tso',
|
|
'tua': 'tru',
|
|
'tul': 'tcy',
|
|
'tuv': 'tyv',
|
|
'twi': 'aka',
|
|
'usb': 'hsb',
|
|
'uyg': 'uig',
|
|
'vit': 'vie',
|
|
'vro': 'vro',
|
|
'wa': 'wbm',
|
|
'wag': 'wbr',
|
|
'wcr': 'crk',
|
|
'wel': 'cym',
|
|
'wlf': 'wol',
|
|
'xbd': 'khb',
|
|
'xhs': 'xho',
|
|
'yak': 'sah',
|
|
'yba': 'yor',
|
|
'ycr': 'cre',
|
|
'yim': 'iii',
|
|
'zhh': 'zho',
|
|
'zhp': 'zho',
|
|
'zhs': 'zho',
|
|
'zht': 'zho',
|
|
'znd': 'zne',
|
|
}
|
|
|
|
# Font features
|
|
LIGATURE_KEYS = {
|
|
'common-ligatures': ['liga', 'clig'],
|
|
'historical-ligatures': ['hlig'],
|
|
'discretionary-ligatures': ['dlig'],
|
|
'contextual': ['calt'],
|
|
}
|
|
CAPS_KEYS = {
|
|
'small-caps': ['smcp'],
|
|
'all-small-caps': ['c2sc', 'smcp'],
|
|
'petite-caps': ['pcap'],
|
|
'all-petite-caps': ['c2pc', 'pcap'],
|
|
'unicase': ['unic'],
|
|
'titling-caps': ['titl'],
|
|
}
|
|
NUMERIC_KEYS = {
|
|
'lining-nums': 'lnum',
|
|
'oldstyle-nums': 'onum',
|
|
'proportional-nums': 'pnum',
|
|
'tabular-nums': 'tnum',
|
|
'diagonal-fractions': 'frac',
|
|
'stacked-fractions': 'afrc',
|
|
'ordinal': 'ordn',
|
|
'slashed-zero': 'zero',
|
|
}
|
|
EAST_ASIAN_KEYS = {
|
|
'jis78': 'jp78',
|
|
'jis83': 'jp83',
|
|
'jis90': 'jp90',
|
|
'jis04': 'jp04',
|
|
'simplified': 'smpl',
|
|
'traditional': 'trad',
|
|
'full-width': 'fwid',
|
|
'proportional-width': 'pwid',
|
|
'ruby': 'ruby',
|
|
}
|
|
|
|
# Fontconfig features
|
|
FONTCONFIG_WEIGHT = {
|
|
'normal': 'normal',
|
|
'bold': 'bold',
|
|
100: 'thin',
|
|
200: 'extralight',
|
|
300: 'light',
|
|
400: 'normal',
|
|
500: 'medium',
|
|
600: 'demibold',
|
|
700: 'bold',
|
|
800: 'extrabold',
|
|
900: 'black',
|
|
}
|
|
FONTCONFIG_STYLE = {
|
|
'normal': 'roman',
|
|
'italic': 'italic',
|
|
'oblique': 'oblique',
|
|
}
|
|
FONTCONFIG_STRETCH = {
|
|
'normal': 'normal',
|
|
'ultra-condensed': 'ultracondensed',
|
|
'extra-condensed': 'extracondensed',
|
|
'condensed': 'condensed',
|
|
'semi-condensed': 'semicondensed',
|
|
'semi-expanded': 'semiexpanded',
|
|
'expanded': 'expanded',
|
|
'extra-expanded': 'extraexpanded',
|
|
'ultra-expanded': 'ultraexpanded',
|
|
}
|