aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2013-09-21 00:12:01 -0400
committerRalph Amissah <ralph@amissah.com>2013-09-21 00:12:01 -0400
commit235f83d470866decff55a50c0ea380ab174457d8 (patch)
treedf87d1b2c9325016b1ee0ae33ec9ede42dbd66f7
parentv4: dal, objects, store book index as hash (simplify downstream processing) (diff)
v4 v5: i18n CJK: zh ja ko, add languages Chinese, Japanese, Korean
* texpdf, has large texlive xetex dependencies (Korean untested)
-rw-r--r--data/doc/sisu/CHANGELOG_v44
-rw-r--r--data/doc/sisu/CHANGELOG_v54
-rw-r--r--lib/sisu/v4/constants.rb2
-rw-r--r--lib/sisu/v4/dal_syntax.rb2
-rw-r--r--lib/sisu/v4/i18n.rb6
-rw-r--r--lib/sisu/v4/options.rb11
-rw-r--r--lib/sisu/v4/param_make.rb24
-rw-r--r--lib/sisu/v4/sysenv.rb27
-rw-r--r--lib/sisu/v4/texpdf_format.rb48
-rw-r--r--lib/sisu/v5/constants.rb2
-rw-r--r--lib/sisu/v5/dal_syntax.rb2
-rw-r--r--lib/sisu/v5/i18n.rb6
-rw-r--r--lib/sisu/v5/options.rb11
-rw-r--r--lib/sisu/v5/param_make.rb24
-rw-r--r--lib/sisu/v5/sysenv.rb27
-rw-r--r--lib/sisu/v5/texpdf_format.rb48
16 files changed, 224 insertions, 24 deletions
diff --git a/data/doc/sisu/CHANGELOG_v4 b/data/doc/sisu/CHANGELOG_v4
index b1ed1011..888fc56c 100644
--- a/data/doc/sisu/CHANGELOG_v4
+++ b/data/doc/sisu/CHANGELOG_v4
@@ -30,6 +30,10 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_4.2.4.orig.tar.xz
sisu_4.2.4.orig.tar.xz
sisu_4.2.4-1.dsc
+* i18n CJK: zh ja ko, add languages Chinese, Japanese, Korean
+ * texpdf, has large texlive xetex dependencies (Korean untested)
+ * [concordance, untouched does nothing cjk, decide whether to disable]
+
* dal, objects, store book index as hash (simplify downstream processing), and
associated downstream processing change from v5
* db, book index, convert hash back to string
diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5
index 27f4d405..5fcfdd62 100644
--- a/data/doc/sisu/CHANGELOG_v5
+++ b/data/doc/sisu/CHANGELOG_v5
@@ -30,6 +30,10 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.0.17.orig.tar.xz
sisu_5.0.17.orig.tar.xz
sisu_5.0.17-1.dsc
+* i18n CJK: zh ja ko, add languages Chinese, Japanese, Korean
+ * texpdf, has large texlive xetex dependencies (Korean untested)
+ * [concordance, untouched does nothing cjk, decide whether to disable]
+
* minor cleaning
%% 5.0.16.orig.tar.xz (2013-09-07:35/6)
diff --git a/lib/sisu/v4/constants.rb b/lib/sisu/v4/constants.rb
index 28bb2f49..962b1ca4 100644
--- a/lib/sisu/v4/constants.rb
+++ b/lib/sisu/v4/constants.rb
@@ -209,7 +209,7 @@ Px={
po_subscript_o: ',{', po_subscript_c: '},',
po_hilite_o: '*{', po_hilite_c: '}*',
po_monospace_o: '#{', po_monospace_c: '}#',
- lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi],
+ lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh],
lv1: '*',
lv2: '=',
lv3: '=',
diff --git a/lib/sisu/v4/dal_syntax.rb b/lib/sisu/v4/dal_syntax.rb
index c49f41f7..0f57307e 100644
--- a/lib/sisu/v4/dal_syntax.rb
+++ b/lib/sisu/v4/dal_syntax.rb
@@ -332,7 +332,7 @@ module SiSU_DAL_Syntax
dob
end
def fontface(dob)
- leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|\>/
+ leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|[、。]|\>/
dob=fontface_lines(dob,leader)
dob.obj=dob.obj.gsub(/(#{leader})\*\{(.+?)\}\*/m,
"\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
diff --git a/lib/sisu/v4/i18n.rb b/lib/sisu/v4/i18n.rb
index 3bccc1fc..7480e15f 100644
--- a/lib/sisu/v4/i18n.rb
+++ b/lib/sisu/v4/i18n.rb
@@ -91,6 +91,8 @@ module SiSU_i18n
ia: { c: 'ia', n: 'Interlingua', t: 'Interlingua', xlp: 'interlingua' },
is: { c: 'is', n: 'Icelandic', t: 'Icelandic', xlp: 'icelandic' },
it: { c: 'it', n: 'Italian', t: 'Italiano', xlp: 'italian' },
+ ja: { c: 'ja', n: 'Japanese', t: '日本語 (Nihongo)', xlp: 'japanese' },
+ ko: { c: 'ko', n: 'Korean', t: 'Korean', xlp: 'korean' },
la: { c: 'la', n: 'Latin', t: 'Latin', xlp: 'latin' },
lo: { c: 'lo', n: 'Lao', t: 'Lao', xlp: 'lao' },
lt: { c: 'lt', n: 'Lithuanian', t: 'Lithuanian', xlp: 'lithuanian' },
@@ -122,6 +124,7 @@ module SiSU_i18n
ur: { c: 'ur', n: 'Urdu', t: 'Urdu', xlp: 'urdu' },
us: { c: 'en', n: 'English (American)',t: 'English', xlp: 'english' },
vi: { c: 'vi', n: 'Vietnamese', t: 'Vietnamese', xlp: 'vietnamese' },
+ zh: { c: 'zh', n: 'Chinese', t: '中文', xlp: 'chinese' },
en: { c: 'en', n: 'English', t: 'English', xlp: 'english' },
xx: { c: 'xx', n: 'Default', t: 'English', xlp: 'english' },
}
@@ -154,6 +157,8 @@ module SiSU_i18n
'ia' => table[:ia],
'is' => table[:is],
'it' => table[:it],
+ 'ja' => table[:ja],
+ 'ko' => table[:ko],
'la' => table[:la],
'lo' => table[:lo],
'lt' => table[:lt],
@@ -185,6 +190,7 @@ module SiSU_i18n
'ur' => table[:ur],
'us' => table[:en],
'vi' => table[:vi],
+ 'zh' => table[:zh],
'en' => table[:en],
'xx' => table[:en]
}
diff --git a/lib/sisu/v4/options.rb b/lib/sisu/v4/options.rb
index 9d6821ac..54ef7ccc 100644
--- a/lib/sisu/v4/options.rb
+++ b/lib/sisu/v4/options.rb
@@ -66,14 +66,12 @@ module SiSU_Commandline
require_relative 'param_make' # param_make.rb
@@sisu_call_origin_path=nil
class HeaderCommon
- def initialize(make_instruct_array)
- @make_instruct_array=make_instruct_array
- end
def sisu_document_make_instructions
@pagenew=@pagebreak=@pageline=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@num_top=@i18n=@man_section=@emphasis_set_to=@bold_match_list=@italics_match_list=@substitution_match_list=@footer_links=@home_button_links=@links=nil
+ make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read
@makeset=false
- if @make_instruct_array
- @make_instruct_array.each do |para| #% scan document
+ if make_instruct_array
+ make_instruct_array.each do |para| #% scan document
if para =~/^(?:@make:|@links:)[+-]?\s/
case para
when /^@make:(.+)/m #% header processing - make
@@ -153,8 +151,7 @@ module SiSU_Commandline
@base_stub=@base_path.gsub(u,'\1')
@a=sisu_glob_rules(a)
@a.freeze
- make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read
- @make_instructions=HeaderCommon.new(make_instruct_array).sisu_document_make_instructions
+ @make_instructions=HeaderCommon.new.sisu_document_make_instructions
@make_instructions_pod=nil
init
end
diff --git a/lib/sisu/v4/param_make.rb b/lib/sisu/v4/param_make.rb
index 616ef77d..32576fb8 100644
--- a/lib/sisu/v4/param_make.rb
+++ b/lib/sisu/v4/param_make.rb
@@ -360,6 +360,30 @@ module SiSU_Param_Make
? @h['texpdf_font_mono']
: @env.font.texpdf.mono
end
+ def cjk
+ @h['texpdf_font_cjk'] \
+ && (@h['texpdf_font_cjk']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk']
+ : @env.font.texpdf.cjk
+ end
+ def cjk_zh
+ @h['texpdf_font_cjk_zh'] \
+ && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk_zh']
+ : @env.font.texpdf.cjk_zh
+ end
+ def cjk_ja
+ @h['texpdf_font_cjk_ja'] \
+ && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk_ja']
+ : @env.font.texpdf.cjk_ja
+ end
+ def cjk_ko
+ @h['texpdf_font_cjk_ko'] \
+ && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk_ko']
+ : @env.font.texpdf.cjk_ko
+ end
self
end
def promo
diff --git a/lib/sisu/v4/sysenv.rb b/lib/sisu/v4/sysenv.rb
index 4db204d8..b13d5a88 100644
--- a/lib/sisu/v4/sysenv.rb
+++ b/lib/sisu/v4/sysenv.rb
@@ -1780,6 +1780,9 @@ WOK
end
def font
def texpdf
+ # you may wish to check selected font against available fonts:
+ # fc-list :outline -f "%{family}\n"
+ # fc-list :lang=ja
def main
(defined? @rc['default']['texpdf_font']) \
&& (@rc['default']['texpdf_font']=~/\S{3,}/) \
@@ -1804,6 +1807,30 @@ WOK
? @rc['default']['texpdf_font_mono']
: 'Liberation Mono'
end
+ def cjk
+ (defined? @rc['default']['texpdf_font_cjk']) \
+ && (@rc['default']['texpdf_font_cjk']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk']
+ : 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic'
+ end
+ def cjk_zh
+ (defined? @rc['default']['texpdf_font_cjk_zh']) \
+ && (@rc['default']['texpdf_font_cjk_zh']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk_zh']
+ : 'IPAGothic'
+ end
+ def cjk_ja
+ (defined? @rc['default']['texpdf_font_cjk_ja']) \
+ && (@rc['default']['texpdf_font_cjk_ja']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk_ja']
+ : 'IPAGothic'
+ end
+ def cjk_ko
+ (defined? @rc['default']['texpdf_font_cjk_ko']) \
+ && (@rc['default']['texpdf_font_cjk_ko']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk_ko']
+ : 'IPAGothic'
+ end
self
end
self
diff --git a/lib/sisu/v4/texpdf_format.rb b/lib/sisu/v4/texpdf_format.rb
index b010bb08..d87a457e 100644
--- a/lib/sisu/v4/texpdf_format.rb
+++ b/lib/sisu/v4/texpdf_format.rb
@@ -794,11 +794,52 @@ module SiSU_TeX_Pdf
@md.make.texpdf_font.mono
else @env.font.texpdf.mono
end
- # you may wish to check selected font against avaiable fonts:
+ texpdf_font_cjk=if @md.opt.lng =~/zh/ \
+ and defined? @md.make.texpdf_font.cjk_zh \
+ and not @md.make.texpdf_font.cjk_zh.nil? \
+ and @md.make.texpdf_font.cjk_zh=~/\S{3,}/
+ @md.make.texpdf_font.cjk_zh
+ elsif @md.opt.lng =~/ja/ \
+ and defined? @md.make.texpdf_font.cjk_ja \
+ and not @md.make.texpdf_font.cjk_ja.nil? \
+ and @md.make.texpdf_font.cjk_ja=~/\S{3,}/
+ @md.make.texpdf_font.cjk_ja
+ elsif @md.opt.lng =~/ko/ \
+ and defined? @md.make.texpdf_font.cjk_ko \
+ and not @md.make.texpdf_font.cjk_ko.nil? \
+ and @md.make.texpdf_font.cjk_ko=~/\S{3,}/
+ @md.make.texpdf_font.cjk_ko
+ elsif @md.opt.lng =~/(?:zh|ja|ko)/ \
+ and defined? @md.make.texpdf_font.cjk \
+ and not @md.make.texpdf_font.cjk.nil? \
+ and @md.make.texpdf_font.cjk=~/\S{3,}/
+ @md.make.texpdf_font.cjk
+ else
+ case @md.opt.lng
+ when /zh/; @env.font.texpdf.cjk_zh
+ when /ja/; @env.font.texpdf.cjk_ja
+ when /ko/; @env.font.texpdf.cjk_ko
+ else @env.font.texpdf.cjk
+ end
+ end
+ # you may wish to check selected font against available fonts:
# fc-list :outline -f "%{family}\n"
+ # fc-list :lang=ja
case @tex2pdf
when /xe/
- <<-WOK
+ if @md.opt.lng =~/(?:zh|ja|ko)/
+ <<-WOK
+\\usepackage{ucs, fontspec, xltxtra, xunicode, xeCJK}
+\\setmainCJKlanguage{#{tex_head_lang[:mainlang]}}
+\\setCJKmainfont{#{texpdf_font_cjk}}
+\\XeTeXlinebreaklocale "#{tex_head_lang[:mainlang]}"
+\\XeTeXlinebreakskip = 0pt plus 1pt
+\\setotherlanguage{#{tex_head_lang[:otherlang]}}
+\\setmainfont{#{texpdf_font}}
+\\setmonofont[Scale=0.85]{#{texpdf_font_mono}}
+ WOK
+ else
+ <<-WOK
\\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode}
\\setmainlanguage{#{tex_head_lang[:mainlang]}}
\\setotherlanguage{#{tex_head_lang[:otherlang]}}
@@ -806,7 +847,8 @@ module SiSU_TeX_Pdf
\\setmonofont[Scale=0.85]{#{texpdf_font_mono}}
% \\setsansfont{#{texpdf_font_sans}}
% \\setromanfont{#{texpdf_font_serif}}
- WOK
+ WOK
+ end
when /pdf/
if @md.file_encoding =~ /iso-?8859/i #% iso8859
<<-WOK
diff --git a/lib/sisu/v5/constants.rb b/lib/sisu/v5/constants.rb
index bc98ca99..78655871 100644
--- a/lib/sisu/v5/constants.rb
+++ b/lib/sisu/v5/constants.rb
@@ -209,7 +209,7 @@ Px={
po_subscript_o: ',{', po_subscript_c: '},',
po_hilite_o: '*{', po_hilite_c: '}*',
po_monospace_o: '#{', po_monospace_c: '}#',
- lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi],
+ lng_lst: %w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it ja ko la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi zh],
lv1: '*',
lv2: '=',
lv3: '=',
diff --git a/lib/sisu/v5/dal_syntax.rb b/lib/sisu/v5/dal_syntax.rb
index f6d01d22..1e1d8542 100644
--- a/lib/sisu/v5/dal_syntax.rb
+++ b/lib/sisu/v5/dal_syntax.rb
@@ -332,7 +332,7 @@ module SiSU_DAL_Syntax
dob
end
def fontface(dob)
- leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|\>/
+ leader=/^|#{Mx[:gl_c]}|\s+|['"]|[#{Mx[:nbsp]}#{Mx[:fa_o_c]}#{Mx[:fa_c]}#{Mx[:lnk_o]}#{Mx[:br_nl]}#{Mx[:br_line]}#{Mx[:br_paragraph]}#{Mx[:tc_c]}#{Mx[:tc_p]}]|[\(\[\{]|[、。]|\>/
dob=fontface_lines(dob,leader)
dob.obj=dob.obj.gsub(/(#{leader})\*\{(.+?)\}\*/m,
"\\1#{@emph[:o]}\\2#{@emph[:c]}"). #emphasis
diff --git a/lib/sisu/v5/i18n.rb b/lib/sisu/v5/i18n.rb
index b635af15..cfd02244 100644
--- a/lib/sisu/v5/i18n.rb
+++ b/lib/sisu/v5/i18n.rb
@@ -91,6 +91,8 @@ module SiSU_i18n
ia: { c: 'ia', n: 'Interlingua', t: 'Interlingua', xlp: 'interlingua' },
is: { c: 'is', n: 'Icelandic', t: 'Icelandic', xlp: 'icelandic' },
it: { c: 'it', n: 'Italian', t: 'Italiano', xlp: 'italian' },
+ ja: { c: 'ja', n: 'Japanese', t: '日本語 (Nihongo)', xlp: 'japanese' },
+ ko: { c: 'ko', n: 'Korean', t: 'Korean', xlp: 'korean' },
la: { c: 'la', n: 'Latin', t: 'Latin', xlp: 'latin' },
lo: { c: 'lo', n: 'Lao', t: 'Lao', xlp: 'lao' },
lt: { c: 'lt', n: 'Lithuanian', t: 'Lithuanian', xlp: 'lithuanian' },
@@ -122,6 +124,7 @@ module SiSU_i18n
ur: { c: 'ur', n: 'Urdu', t: 'Urdu', xlp: 'urdu' },
us: { c: 'en', n: 'English (American)',t: 'English', xlp: 'english' },
vi: { c: 'vi', n: 'Vietnamese', t: 'Vietnamese', xlp: 'vietnamese' },
+ zh: { c: 'zh', n: 'Chinese', t: '中文', xlp: 'chinese' },
en: { c: 'en', n: 'English', t: 'English', xlp: 'english' },
xx: { c: 'xx', n: 'Default', t: 'English', xlp: 'english' },
}
@@ -154,6 +157,8 @@ module SiSU_i18n
'ia' => table[:ia],
'is' => table[:is],
'it' => table[:it],
+ 'ja' => table[:ja],
+ 'ko' => table[:ko],
'la' => table[:la],
'lo' => table[:lo],
'lt' => table[:lt],
@@ -185,6 +190,7 @@ module SiSU_i18n
'ur' => table[:ur],
'us' => table[:en],
'vi' => table[:vi],
+ 'zh' => table[:zh],
'en' => table[:en],
'xx' => table[:en]
}
diff --git a/lib/sisu/v5/options.rb b/lib/sisu/v5/options.rb
index 031258af..422762d1 100644
--- a/lib/sisu/v5/options.rb
+++ b/lib/sisu/v5/options.rb
@@ -66,14 +66,12 @@ module SiSU_Commandline
require_relative 'param_make' # param_make.rb
@@sisu_call_origin_path=nil
class HeaderCommon
- def initialize(make_instruct_array)
- @make_instruct_array=make_instruct_array
- end
def sisu_document_make_instructions
@pagenew=@pagebreak=@pageline=@toc=@lv1=@lv2=@lv3=@lv4=@lv5=@lv6=@num_top=@i18n=@man_section=@emphasis_set_to=@bold_match_list=@italics_match_list=@substitution_match_list=@footer_links=@home_button_links=@links=nil
+ make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read
@makeset=false
- if @make_instruct_array
- @make_instruct_array.each do |para| #% scan document
+ if make_instruct_array
+ make_instruct_array.each do |para| #% scan document
if para =~/^(?:@make:|@links:)[+-]?\s/
case para
when /^@make:(.+)/m #% header processing - make
@@ -153,8 +151,7 @@ module SiSU_Commandline
@base_stub=@base_path.gsub(u,'\1')
@a=sisu_glob_rules(a)
@a.freeze
- make_instruct_array=SiSU_Env::GetInit.new.sisu_document_make.makefile_read
- @make_instructions=HeaderCommon.new(make_instruct_array).sisu_document_make_instructions
+ @make_instructions=HeaderCommon.new.sisu_document_make_instructions
@make_instructions_pod=nil
init
end
diff --git a/lib/sisu/v5/param_make.rb b/lib/sisu/v5/param_make.rb
index ba89c7b3..ec538ccb 100644
--- a/lib/sisu/v5/param_make.rb
+++ b/lib/sisu/v5/param_make.rb
@@ -360,6 +360,30 @@ module SiSU_Param_Make
? @h['texpdf_font_mono']
: @env.font.texpdf.mono
end
+ def cjk
+ @h['texpdf_font_cjk'] \
+ && (@h['texpdf_font_cjk']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk']
+ : @env.font.texpdf.cjk
+ end
+ def cjk_zh
+ @h['texpdf_font_cjk_zh'] \
+ && (@h['texpdf_font_cjk_zh']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk_zh']
+ : @env.font.texpdf.cjk_zh
+ end
+ def cjk_ja
+ @h['texpdf_font_cjk_ja'] \
+ && (@h['texpdf_font_cjk_ja']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk_ja']
+ : @env.font.texpdf.cjk_ja
+ end
+ def cjk_ko
+ @h['texpdf_font_cjk_ko'] \
+ && (@h['texpdf_font_cjk_ko']=~/\S{3,}/) \
+ ? @h['texpdf_font_cjk_ko']
+ : @env.font.texpdf.cjk_ko
+ end
self
end
def promo
diff --git a/lib/sisu/v5/sysenv.rb b/lib/sisu/v5/sysenv.rb
index 62ef451f..0616abb7 100644
--- a/lib/sisu/v5/sysenv.rb
+++ b/lib/sisu/v5/sysenv.rb
@@ -1780,6 +1780,9 @@ WOK
end
def font
def texpdf
+ # you may wish to check selected font against available fonts:
+ # fc-list :outline -f "%{family}\n"
+ # fc-list :lang=ja
def main
(defined? @rc['default']['texpdf_font']) \
&& (@rc['default']['texpdf_font']=~/\S{3,}/) \
@@ -1804,6 +1807,30 @@ WOK
? @rc['default']['texpdf_font_mono']
: 'Liberation Mono'
end
+ def cjk
+ (defined? @rc['default']['texpdf_font_cjk']) \
+ && (@rc['default']['texpdf_font_cjk']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk']
+ : 'IPAGothic' # 'IPAGothic' # 'IPAMincho' # 'TakaoMincho' # 'VL Gothic'
+ end
+ def cjk_zh
+ (defined? @rc['default']['texpdf_font_cjk_zh']) \
+ && (@rc['default']['texpdf_font_cjk_zh']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk_zh']
+ : 'IPAGothic'
+ end
+ def cjk_ja
+ (defined? @rc['default']['texpdf_font_cjk_ja']) \
+ && (@rc['default']['texpdf_font_cjk_ja']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk_ja']
+ : 'IPAGothic'
+ end
+ def cjk_ko
+ (defined? @rc['default']['texpdf_font_cjk_ko']) \
+ && (@rc['default']['texpdf_font_cjk_ko']=~/\S{3,}/) \
+ ? @rc['default']['texpdf_font_cjk_ko']
+ : 'IPAGothic'
+ end
self
end
self
diff --git a/lib/sisu/v5/texpdf_format.rb b/lib/sisu/v5/texpdf_format.rb
index 172dfa56..5ed6ca75 100644
--- a/lib/sisu/v5/texpdf_format.rb
+++ b/lib/sisu/v5/texpdf_format.rb
@@ -794,11 +794,52 @@ module SiSU_TeX_Pdf
@md.make.texpdf_font.mono
else @env.font.texpdf.mono
end
- # you may wish to check selected font against avaiable fonts:
+ texpdf_font_cjk=if @md.opt.lng =~/zh/ \
+ and defined? @md.make.texpdf_font.cjk_zh \
+ and not @md.make.texpdf_font.cjk_zh.nil? \
+ and @md.make.texpdf_font.cjk_zh=~/\S{3,}/
+ @md.make.texpdf_font.cjk_zh
+ elsif @md.opt.lng =~/ja/ \
+ and defined? @md.make.texpdf_font.cjk_ja \
+ and not @md.make.texpdf_font.cjk_ja.nil? \
+ and @md.make.texpdf_font.cjk_ja=~/\S{3,}/
+ @md.make.texpdf_font.cjk_ja
+ elsif @md.opt.lng =~/ko/ \
+ and defined? @md.make.texpdf_font.cjk_ko \
+ and not @md.make.texpdf_font.cjk_ko.nil? \
+ and @md.make.texpdf_font.cjk_ko=~/\S{3,}/
+ @md.make.texpdf_font.cjk_ko
+ elsif @md.opt.lng =~/(?:zh|ja|ko)/ \
+ and defined? @md.make.texpdf_font.cjk \
+ and not @md.make.texpdf_font.cjk.nil? \
+ and @md.make.texpdf_font.cjk=~/\S{3,}/
+ @md.make.texpdf_font.cjk
+ else
+ case @md.opt.lng
+ when /zh/; @env.font.texpdf.cjk_zh
+ when /ja/; @env.font.texpdf.cjk_ja
+ when /ko/; @env.font.texpdf.cjk_ko
+ else @env.font.texpdf.cjk
+ end
+ end
+ # you may wish to check selected font against available fonts:
# fc-list :outline -f "%{family}\n"
+ # fc-list :lang=ja
case @tex2pdf
when /xe/
- <<-WOK
+ if @md.opt.lng =~/(?:zh|ja|ko)/
+ <<-WOK
+\\usepackage{ucs, fontspec, xltxtra, xunicode, xeCJK}
+\\setmainCJKlanguage{#{tex_head_lang[:mainlang]}}
+\\setCJKmainfont{#{texpdf_font_cjk}}
+\\XeTeXlinebreaklocale "#{tex_head_lang[:mainlang]}"
+\\XeTeXlinebreakskip = 0pt plus 1pt
+\\setotherlanguage{#{tex_head_lang[:otherlang]}}
+\\setmainfont{#{texpdf_font}}
+\\setmonofont[Scale=0.85]{#{texpdf_font_mono}}
+ WOK
+ else
+ <<-WOK
\\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode}
\\setmainlanguage{#{tex_head_lang[:mainlang]}}
\\setotherlanguage{#{tex_head_lang[:otherlang]}}
@@ -806,7 +847,8 @@ module SiSU_TeX_Pdf
\\setmonofont[Scale=0.85]{#{texpdf_font_mono}}
% \\setsansfont{#{texpdf_font_sans}}
% \\setromanfont{#{texpdf_font_serif}}
- WOK
+ WOK
+ end
when /pdf/
if @md.file_encoding =~ /iso-?8859/i #% iso8859
<<-WOK