From e0db143401ae56f575db3e1c5b9637e601ae1f6f Mon Sep 17 00:00:00 2001 From: Hironori Kitagawa Date: Fri, 2 Mar 2012 05:46:03 +0900 Subject: [PATCH] Metrics for Chinese fonts, by MaQiYuan and SuJie. > Here is a initial version of Chinese font metrics tested by MaQiYuan and SuJie. > This version can works well with Chinese on normal Chinese texts. > We are now collecting more sentences to test our metrics. new file: jfm-banjiao.lua new file: jfm-kaiming.lua modified: jfm-quanjiao.lua new file: metrics-test-zh.pdf new file: metrics-test-zh.tex --- test/zh/jfm-banjiao.lua | 98 ++++++++++++++++++++++++++++++++++++++++++++ test/zh/jfm-kaiming.lua | 98 ++++++++++++++++++++++++++++++++++++++++++++ test/zh/jfm-quanjiao.lua | 4 +- test/zh/metrics-test-zh.pdf | Bin 0 -> 35829 bytes test/zh/metrics-test-zh.tex | 21 ++++++++++ 5 files changed, 219 insertions(+), 2 deletions(-) create mode 100644 test/zh/jfm-banjiao.lua create mode 100644 test/zh/jfm-kaiming.lua create mode 100644 test/zh/metrics-test-zh.pdf create mode 100644 test/zh/metrics-test-zh.tex diff --git a/test/zh/jfm-banjiao.lua b/test/zh/jfm-banjiao.lua new file mode 100644 index 0000000..783e836 --- /dev/null +++ b/test/zh/jfm-banjiao.lua @@ -0,0 +1,98 @@ +luatexja.jfont.define_jfm { + dir = 'yoko', + zw = 1.0, zh = 1.0, + + [0] = { + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + --[1] = { 0.5 , 0.0, 0.5 }, + [3] = { 0.125, 0.0, 0.125 } + } + }, + + [1] = { -- fw. opening punctuations + chars = { + 0x2018, 0x201C, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, + 0x3018, 0x301D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F + }, + align = 'right', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [3] = { 0.25, 0.0, 0.25 } + } + }, + + [2] = { -- fw. closing/colon/dot punctuations, except 4 & 7 + chars = { + 0x2019, 0x201D, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, + 0x3017, 0x3019, 0x301F, 0xFF09, 0xFF0C, 0xFF3D, 0xFF5D, 0xFF60, + 0xFF0E, 0xFF1A, 0xFF1B, 0xFF01, 0xFF1F + }, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + --[0] = { 0.5 , 0.0, 0.5 }, + --[1] = { 0.5 , 0.0, 0.5 }, + [3] = { 0.125, 0.0, 0.125 }, + [5] = { 0.5 , 0.0, 0.5 } + } + }, + + [3] = { -- fw. middle dot punctuations + chars = {0x30FB, 0x00B7}, + align = 'middle', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.125, 0.0, 0.125 }, + [1] = { 0.125, 0.0, 0.125 }, + [2] = { 0.125, 0.0, 0.125 }, + [3] = { 0.5 , 0.0, 0.5 }, + [4] = { 0.25, 0.0, 0.25 }, + [5] = { 0.25, 0.0, 0.25 }, + [7] = { 0.25, 0.0, 0.25 } + } + }, + + [4] = { -- ideographic full stop + chars = {0x3002}, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + --[0] = { 0.5 , 0.0, 0.0 }, + [1] = { 0.5 , 0.0, 0.0 }, + [3] = { 0.75, 0.0, 0.25 }, + [5] = { 0.5 , 0.0, 0.0 } + } + }, + + [5] = { -- fw. dash punctuations + chars = { 0x2015, 0x2025, 0x2026, 0x2014, 0x301C, 0xFF5E }, + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5 }, + [3] = { 0.25, 0.0, 0.25 } + }, + kern = { + [5] = 0.0 + } + }, + + [6] = { -- box end + chars = {'boxbdd'}, + }, + + [7] = { -- ideographic comma + chars = {0x3001}, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5 , 0.0, 0.25 }, + [1] = { 0.5 , 0.0, 0.25 }, + [3] = { 0.25, 0.0, 0.25 }, + [5] = { 0.5 , 0.0, 0.25 } + } + }, + +} diff --git a/test/zh/jfm-kaiming.lua b/test/zh/jfm-kaiming.lua new file mode 100644 index 0000000..cb166ec --- /dev/null +++ b/test/zh/jfm-kaiming.lua @@ -0,0 +1,98 @@ +luatexja.jfont.define_jfm { + dir = 'yoko', + zw = 1.0, zh = 1.0, + + [0] = { + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + --[1] = { 0.5 , 0.0, 0.5 }, + [3] = { 0.125, 0.0, 0.125 } + } + }, + + [1] = { -- fw. opening punctuations + chars = { + 0x2018, 0x201C, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, + 0x3018, 0x301D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F + }, + align = 'right', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [3] = { 0.25, 0.0, 0.25 } + } + }, + + [2] = { -- fw. closing/colon/dot punctuations, except 4 & 7 + chars = { + 0x2019, 0x201D, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, + 0x3017, 0x3019, 0x301F, 0xFF09, 0xFF0C, 0xFF3D, 0xFF5D, 0xFF60, + 0xFF0E, 0xFF1A, 0xFF1B + }, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + --[0] = { 0.5 , 0.0, 0.5 }, + --[1] = { 0.5 , 0.0, 0.5 }, + [3] = { 0.125, 0.0, 0.125 }, + [5] = { 0.5 , 0.0, 0.5 } + } + }, + + [3] = { -- fw. middle dot punctuations + chars = {0x30FB, 0x00B7}, + align = 'middle', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.125, 0.0, 0.125 }, + [1] = { 0.125, 0.0, 0.125 }, + [2] = { 0.125, 0.0, 0.125 }, + [3] = { 0.5 , 0.0, 0.5 }, + [4] = { 0.25, 0.0, 0.25 }, + [5] = { 0.25, 0.0, 0.25 }, + [7] = { 0.25, 0.0, 0.25 } + } + }, + + [4] = { -- ideographic full stop + chars = {0x3002, 0xFF1F, 0xFF01}, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5 , 0.0, 0.0 }, + [1] = { 0.5 , 0.0, 0.0 }, + [3] = { 0.75, 0.0, 0.25 }, + [5] = { 0.5 , 0.0, 0.0 } + } + }, + + [5] = { -- fw. dash punctuations + chars = { 0x2015, 0x2025, 0x2026, 0x2014, 0x301C, 0xFF5E }, + align = 'left', left = 0.0, down = 0.0, + width = 1.0, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [1] = { 0.5 , 0.0, 0.5 }, + [3] = { 0.25, 0.0, 0.25 } + }, + kern = { + [5] = 0.0 + } + }, + + [6] = { -- box end + chars = {'boxbdd'}, + }, + + [7] = { -- ideographic comma + chars = {0x3001}, + align = 'left', left = 0.0, down = 0.0, + width = 0.5, height = 0.88, depth = 0.12, italic=0.0, + glue = { + [0] = { 0.5 , 0.0, 0.25 }, + [1] = { 0.5 , 0.0, 0.25 }, + [3] = { 0.25, 0.0, 0.25 }, + [5] = { 0.5 , 0.0, 0.25 } + } + }, + +} diff --git a/test/zh/jfm-quanjiao.lua b/test/zh/jfm-quanjiao.lua index b2e7254..20590b6 100644 --- a/test/zh/jfm-quanjiao.lua +++ b/test/zh/jfm-quanjiao.lua @@ -1,4 +1,4 @@ -ltj.define_jfm { +luatexja.jfont.define_jfm { dir = 'yoko', zw = 1.0, zh = 1.0, @@ -95,4 +95,4 @@ ltj.define_jfm { } }, -} \ No newline at end of file +} diff --git a/test/zh/metrics-test-zh.pdf b/test/zh/metrics-test-zh.pdf new file mode 100644 index 0000000000000000000000000000000000000000..86dfbacb7f6fb600c41dedf4979702318f5d63b0 GIT binary patch literal 35829 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 literal 0 HcmV?d00001 diff --git a/test/zh/metrics-test-zh.tex b/test/zh/metrics-test-zh.tex new file mode 100644 index 0000000..f1db807 --- /dev/null +++ b/test/zh/metrics-test-zh.tex @@ -0,0 +1,21 @@ +\input luatexja-core.sty +\jfont\fmdisplay={name:SimSun:jfm=ujis} at 12pt +\jfont\banjiao={name:SimSun:jfm=banjiao} at 12pt +\jfont\quanjiao={name:SimSun:jfm=quanjiao} at 12pt +\jfont\kaiming={name:SimSun:jfm=kaiming} at 12pt +\def\texta{a). ……于是她近乎歇斯底里的喊道:“这真的不是我做的!……”然而这么熟识的人中间,竟然没有一个相信她这个“疯子”。} +\def\textb{b). 他端起茶杯,“俗话说的好,‘到什么山唱什么歌。’”呷了一口茶,继续说到:“像你这样不识抬举,总有一天会吃亏的!”} +\fmdisplay +\beginsection A. 半角标点样式 + +\smallskip +{\banjiao\texta\par\textb} +\beginsection B. 全角标点样式 + +\smallskip +{\quanjiao\texta\par\textb} +\beginsection C. 开明标点样式 + +\smallskip +{\kaiming\texta\par\textb} +\bye \ No newline at end of file -- 2.11.0