From: Günter Milde Date: Wed, 10 Apr 2019 22:31:48 +0000 (+0200) Subject: platex fixes. X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=610ec86bfd3b5910adf03e9c604f33bccba4ed7e;p=features.git platex fixes. * Force unicodesymbols conversion for all *-platex input encodings, * except some characters that work well in utf8. * Use platex if document language is "japanese" and input encoding is "utf8". --- diff --git a/lib/doc/ja/Intro.lyx b/lib/doc/ja/Intro.lyx index ff5042eb06..f69e16c37b 100644 --- a/lib/doc/ja/Intro.lyx +++ b/lib/doc/ja/Intro.lyx @@ -58,9 +58,9 @@ End \language_package auto \inputencoding jis-platex \fontencoding global -\font_roman "palatino" "default" -\font_sans "helvet" "default" -\font_typewriter "courier" "default" +\font_roman "lmodern" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" \font_math "auto" "auto" \font_default_family default \use_non_tex_fonts false diff --git a/lib/examples/ja/Multilingual_Typesetting_%28platex%29.lyx b/lib/examples/ja/Multilingual_Typesetting_%28platex%29.lyx index 40bb2abe47..212228bde0 100644 --- a/lib/examples/ja/Multilingual_Typesetting_%28platex%29.lyx +++ b/lib/examples/ja/Multilingual_Typesetting_%28platex%29.lyx @@ -9,7 +9,7 @@ \maintain_unincluded_children false \language japanese \language_package auto -\inputencoding utf8-platex +\inputencoding utf8 \fontencoding auto \font_roman "lmodern" "default" \font_sans "default" "default" @@ -104,19 +104,11 @@ Deutsch: Grüße aus Österreich! \end_layout \begin_layout Standard -Greek and Cyrillic Unicode characters are too wide. - With Document\SpecialChar menuseparator -Settings\SpecialChar menuseparator -Language\SpecialChar menuseparator -Encoding -\begin_inset Quotes eld -\end_inset - -Japanese (platex) (utf8) -\begin_inset Quotes erd -\end_inset - - they are converted to LaTeX macros, so that the output matches Latin letters: +Some Japanese fonts contain Greek and Cyrillic characters, however they + are are considerabely wider than characters in Latin, Greek, and Cyrillic + TeX fonts. + Therefore, LyX converts them to LaTeX macros, so that the output matches + other non-Japanese text: \end_layout \begin_layout Quotation @@ -132,8 +124,8 @@ Russisch: Привет с \end_layout \begin_layout Standard -Text in other languages with correct language setting - works only for some - languages: +Text in some other languages with correct language setting (not all languages + supported by LyX are compatible with pLaTeX): \end_layout \begin_layout Standard diff --git a/lib/examples/ja/Welcome.lyx b/lib/examples/ja/Welcome.lyx index 21e5fa6c1b..1355b39fb0 100644 --- a/lib/examples/ja/Welcome.lyx +++ b/lib/examples/ja/Welcome.lyx @@ -9,7 +9,7 @@ \maintain_unincluded_children false \language japanese \language_package auto -\inputencoding utf8-platex +\inputencoding utf8 \fontencoding auto \font_roman "lmodern" "default" \font_sans "default" "default" diff --git a/lib/unicodesymbols b/lib/unicodesymbols index 54959d6bf3..57dbf78e31 100644 --- a/lib/unicodesymbols +++ b/lib/unicodesymbols @@ -60,13 +60,13 @@ # 0x00a0 "~" "" "force=cp862;cp1255;cp1256;koi8-u;iso8859-6;iso8859-7,notermination=both" "~" "" # NO-BREAK SPACE 0x00a1 "\\textexclamdown" "" "force=cp862;cp1255;euc-jp;euc-kr" # INVERTED EXCLAMATION MARK -0x00a2 "\\textcent" "textcomp" "force=cp862;cp1255;cp1256;euc-jp;jis" #"\\mathcent" "txfonts|pxfonts" # CENT SIGN -0x00a3 "\\pounds" "" "force=cp862;cp1255;cp1256;iso8859-7;euc-jp;jis" "\\pounds" "" # £ POUND SIGN +0x00a2 "\\textcent" "textcomp" "force=cp862;cp1255;cp1256;euc-jp;euc-jp-platex;jis;shift-jis-platex" #"\\mathcent" "txfonts|pxfonts" # CENT SIGN +0x00a3 "\\pounds" "" "force=cp862;cp1255;cp1256;iso8859-7;euc-jp;euc-jp-platex;jis;shift-jis-platex" "\\pounds" "" # £ POUND SIGN 0x00a4 "\\textcurrency" "textcomp" "force=cp1256;euc-cn;euc-jp;euc-kr;gbk;iso8859-6" # CURRENCY SYMBOL -0x00a5 "\\textyen" "textcomp" "force=cp862;cp1255;cp1256;euc-jp;jis" "\\yen" "amssymb" # YEN SIGN +0x00a5 "\\textyen" "textcomp" "force=cp862;cp1255;cp1256;euc-jp;jis;shift-jis-platex" "\\yen" "amssymb" # YEN SIGN 0x00a6 "\\textbrokenbar" "textcomp" "force=cp1255;cp1256;iso8859-7;euc-jp" # BROKEN BAR -0x00a7 "\\textsection" "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "\\mathsection" "" # SECTION SIGN -0x00a8 "\\textasciidieresis" "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;gbk;jis" # DIAERESIS +0x00a7 "\\textsection" "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis;shift-jis-platex" "\\mathsection" "" # SECTION SIGN +0x00a8 "\\textasciidieresis" "textcomp" "force=cp1255;cp1256;iso8859-7;euc-cn;euc-jp;euc-kr;gbk;jis;shift-jis-platex" # DIAERESIS 0x00a9 "\\textcopyright" "textcomp" "force=cp1255;cp1256;koi8-u;iso8859-7;euc-jp" # COPYRIGHT SIGN 0x00aa "\\textordfeminine" "textcomp" "force=cp862;euc-jp;euc-kr" # FEMININE ORDINAL INDICATOR 0x00ab "\\guillemotleft" "" "force=armscii8;cp862;cp1255;cp1256;iso8859-7" # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -74,13 +74,13 @@ 0x00ad "\\-" "" "force=cp1255;cp1256;iso8859-13;euc-jp;euc-kr;iso8859-6,notermination=text" "" "" # SOFT HYPHEN 0x00ae "\\textregistered" "textcomp" "force=cp1255;cp1256;euc-jp;euc-kr" "\\circledR" "amssymb" # REGISTERED SIGN 0x00af "\\textasciimacron" "textcomp" "force=cp1255;cp1256;euc-jp" # MACRON -0x00b0 "\\textdegree" "textcomp" "force=cp862;cp1255;cp1256;koi8-u;iso8859-7;euc-cn;euc-jp;euc-kr;euc-tw;gbk;jis" "{^\\circ}" "" # DEGREE SIGN +0x00b0 "\\textdegree" "textcomp" "force=cp862;cp1255;cp1256;koi8-u;iso8859-7;euc-cn;euc-jp;euc-jp-platex;euc-kr;euc-tw;gbk;jis;shift-jis-platex" "{^\\circ}" "" # DEGREE SIGN 0x00b1 "\\textpm" "textcomp" "force" "\\pm" "" # ± PLUS-MINUS SIGN 0x00b2 "\\texttwosuperior" "textcomp" "force" "{{}^2}" "" # ² SUPERSCRIPT TWO 0x00b3 "\\textthreesuperior" "textcomp" "force" "{{}^3}" "" # ³ SUPERSCRIPT THREE -0x00b4 "\\textasciiacute" "textcomp" "force=cp1255;cp1256;euc-jp;euc-kr;jis" # ACUTE ACCENT +0x00b4 "\\textasciiacute" "textcomp" "force=cp1255;cp1256;euc-jp;euc-kr;jis;shift-jis-platex" # ACUTE ACCENT 0x00b5 "\\textmu" "textcomp" "force!=utf8;jis" "" "" # µ MICRO SIGN (upright, not $\mu$) -0x00b6 "\\textparagraph" "textcomp" "force=cp1255;cp1256;euc-jp;euc-kr;jis" "\\mathparagraph" "" # PILCROW SIGN # not equal to \textpilcrow +0x00b6 "\\textparagraph" "textcomp" "force=cp1255;cp1256;euc-jp;euc-kr;jis;shift-jis-platex" "\\mathparagraph" "" # PILCROW SIGN # not equal to \textpilcrow 0x00b7 "\\textperiodcentered" "" "force=cp862;cp1255;cp1256;koi8-u;iso8859-7;euc-kr;euc-tw;gbk" "\\cdot" "" # MIDDLE DOT 0x00b8 "\\c{ }" "" "force=cp1255;cp1256;euc-jp;euc-kr" "" "" # CEDILLA 0x00b9 "\\textonesuperior" "textcomp" "force" "{{}^1}" "" # ¹ SUPERSCRIPT ONE diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp index 5704940ecd..aee184cb00 100644 --- a/src/BufferParams.cpp +++ b/src/BufferParams.cpp @@ -3435,6 +3435,8 @@ Encoding const & BufferParams::encoding() const return *(encodings.fromLyXName("utf8-plain")); if (inputenc == "auto" || inputenc == "default") return *language->encoding(); + if (inputenc == "utf8" && language->lang() == "japanese") + return *(encodings.fromLyXName("utf8-platex")); Encoding const * const enc = encodings.fromLyXName(inputenc); if (enc) return *enc; diff --git a/src/Encoding.cpp b/src/Encoding.cpp index 321744c166..b3efc20f57 100644 --- a/src/Encoding.cpp +++ b/src/Encoding.cpp @@ -189,17 +189,18 @@ bool Encoding::encodable(char_type c) const { // assure the used encoding is properly initialized init(); - if (iconvName_ == "UTF-8" && package_ == none) return true; // platex does not load inputenc: force conversion of supported characters - if (name_ == "utf8-platex" - && c > 0x007f // Latin-1 Supplement - && (c < 0x05ff || c > 0x1d00) // ... Hebrew + Phonetic Extensions - && (c < 0x2aff || c > 0xfb00) // ... Supplemental Mathematical Operators + Alphabetic... - && (c < 0xfb4f || c > 0x1d400) // ...Presentation Forms + Mathematical... - && c < 0x1d7ff) // ...Alphanumeric Symbols - return false; + if (package_ == Encoding::japanese + && ((0x7f < c && c <= 0x05ff) // Latin-1 Supplement ... Hebrew + || (0x1d00 < c && c <= 0x218f) // Phonetic Extensions ... Number Forms + || (0x2193 < c && c <= 0x2aff) // Arrows ... Supplemental Mathematical Operators + || (0xfb00 < c && c <= 0xfb4f) // Alphabetic Presentation Forms + || (0x1d400 < c && c <= 0x1d7ff)) // Mathematical Alphanumeric Symbols + && c != 0xa2 && c != 0xa3 && c != 0xa5 && c != 0xa7 // exceptions + && c != 0xa8 && c != 0xb0 && c != 0xb4 && c != 0xb6) + return false; if (c < start_encodable_ && !isForced(c)) return true; if (encodable_.find(c) != encodable_.end())