X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FEncoding.cpp;h=c6441f1dc05607d49ee8f780c7f0400ada17c3c6;hb=2417d9d911dbca181c48f45d1aad26d31c9aa815;hp=e1001bf9efc5e9bad780a68038caaf5be7af8d48;hpb=897436efbb9bd641b61467d185a2dfae9839e575;p=lyx.git diff --git a/src/Encoding.cpp b/src/Encoding.cpp index e1001bf9ef..c6441f1dc0 100644 --- a/src/Encoding.cpp +++ b/src/Encoding.cpp @@ -25,24 +25,22 @@ #include - -namespace lyx { - -using support::FileName; - #ifndef CXX_GLOBAL_CSTD using std::strtol; #endif - using std::endl; using std::string; +namespace lyx { + +using support::FileName; + Encodings encodings; namespace { -char_type arabic_table[50][4] = { +char_type arabic_table[172][4] = { {0xfe80, 0xfe80, 0xfe80, 0xfe80}, // 0x0621 = hamza {0xfe81, 0xfe82, 0xfe81, 0xfe82}, // 0x0622 = ligature madda on alef {0xfe83, 0xfe84, 0xfe83, 0xfe84}, // 0x0623 = ligature hamza on alef @@ -96,11 +94,134 @@ char_type arabic_table[50][4] = { {0x0650, 0x0650, 0x0650, 0x0650}, // 0x0650 = kasra {0x0651, 0x0651, 0x0651, 0x0651}, // 0x0651 = shadda {0x0652, 0x0652, 0x0652, 0x0652}, // 0x0652 = sukun + + {0, 0, 0, 0}, // 0x0653 + {0, 0, 0, 0}, // 0x0654 + {0, 0, 0, 0}, // 0x0655 + {0, 0, 0, 0}, // 0x0656 + {0, 0, 0, 0}, // 0x0657 + {0, 0, 0, 0}, // 0x0658 + {0, 0, 0, 0}, // 0x0659 + {0, 0, 0, 0}, // 0x065a + {0, 0, 0, 0}, // 0x065b + {0, 0, 0, 0}, // 0x065c + {0, 0, 0, 0}, // 0x065d + {0, 0, 0, 0}, // 0x065e + {0, 0, 0, 0}, // 0x065f + {0, 0, 0, 0}, // 0x0660 + {0, 0, 0, 0}, // 0x0661 + {0, 0, 0, 0}, // 0x0662 + {0, 0, 0, 0}, // 0x0663 + {0, 0, 0, 0}, // 0x0664 + {0, 0, 0, 0}, // 0x0665 + {0, 0, 0, 0}, // 0x0666 + {0, 0, 0, 0}, // 0x0667 + {0, 0, 0, 0}, // 0x0668 + {0, 0, 0, 0}, // 0x0669 + {0, 0, 0, 0}, // 0x066a + {0, 0, 0, 0}, // 0x066b + {0, 0, 0, 0}, // 0x066c + {0, 0, 0, 0}, // 0x066d + {0, 0, 0, 0}, // 0x066e + {0, 0, 0, 0}, // 0x066f + {0, 0, 0, 0}, // 0x0670 + {0, 0, 0, 0}, // 0x0671 + {0, 0, 0, 0}, // 0x0672 + {0, 0, 0, 0}, // 0x0673 + {0, 0, 0, 0}, // 0x0674 + {0, 0, 0, 0}, // 0x0675 + {0, 0, 0, 0}, // 0x0676 + {0, 0, 0, 0}, // 0x0677 + {0, 0, 0, 0}, // 0x0678 + {0, 0, 0, 0}, // 0x0679 + {0, 0, 0, 0}, // 0x067a + {0, 0, 0, 0}, // 0x067b + {0, 0, 0, 0}, // 0x067c + {0, 0, 0, 0}, // 0x067d + {0xfb56, 0xfb57, 0xfb58, 0xfb59}, // 0x067e = peh + {0, 0, 0, 0}, // 0x067f + {0, 0, 0, 0}, // 0x0680 + {0, 0, 0, 0}, // 0x0681 + {0, 0, 0, 0}, // 0x0682 + {0, 0, 0, 0}, // 0x0683 + {0, 0, 0, 0}, // 0x0684 + {0, 0, 0, 0}, // 0x0685 + {0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d}, // 0x0686 = tcheh + {0, 0, 0, 0}, // 0x0687 + {0, 0, 0, 0}, // 0x0688 + {0, 0, 0, 0}, // 0x0689 + {0, 0, 0, 0}, // 0x068a + {0, 0, 0, 0}, // 0x068b + {0, 0, 0, 0}, // 0x068c + {0, 0, 0, 0}, // 0x068d + {0, 0, 0, 0}, // 0x068e + {0, 0, 0, 0}, // 0x068f + {0, 0, 0, 0}, // 0x0690 + {0, 0, 0, 0}, // 0x0691 + {0, 0, 0, 0}, // 0x0692 + {0, 0, 0, 0}, // 0x0693 + {0, 0, 0, 0}, // 0x0694 + {0, 0, 0, 0}, // 0x0695 + {0, 0, 0, 0}, // 0x0696 + {0, 0, 0, 0}, // 0x0697 + {0xfb8a, 0xfb8b, 0xfb8a, 0xfb8b}, // 0x0698 = jeh + {0, 0, 0, 0}, // 0x0699 + {0, 0, 0, 0}, // 0x069a + {0, 0, 0, 0}, // 0x069b + {0, 0, 0, 0}, // 0x069c + {0, 0, 0, 0}, // 0x069d + {0, 0, 0, 0}, // 0x069e + {0, 0, 0, 0}, // 0x069f + {0, 0, 0, 0}, // 0x06a0 + {0, 0, 0, 0}, // 0x06a1 + {0, 0, 0, 0}, // 0x06a2 + {0, 0, 0, 0}, // 0x06a3 + {0, 0, 0, 0}, // 0x06a4 + {0, 0, 0, 0}, // 0x06a5 + {0, 0, 0, 0}, // 0x06a6 + {0, 0, 0, 0}, // 0x06a7 + {0, 0, 0, 0}, // 0x06a8 + {0xfb8e, 0xfb8f, 0xfb90, 0xfb91}, // 0x06a9 = farsi kaf + {0, 0, 0, 0}, // 0x06aa + {0, 0, 0, 0}, // 0x06ab + {0, 0, 0, 0}, // 0x06ac + {0, 0, 0, 0}, // 0x06ad + {0, 0, 0, 0}, // 0x06ae + {0xfb92, 0xfb93, 0xfb94, 0xfb95}, // 0x06af = gaf + {0, 0, 0, 0}, // 0x06b0 + {0, 0, 0, 0}, // 0x06b1 + {0, 0, 0, 0}, // 0x06b2 + {0, 0, 0, 0}, // 0x06b3 + {0, 0, 0, 0}, // 0x06b4 + {0, 0, 0, 0}, // 0x06b5 + {0, 0, 0, 0}, // 0x06b6 + {0, 0, 0, 0}, // 0x06b7 + {0, 0, 0, 0}, // 0x06b8 + {0, 0, 0, 0}, // 0x06b9 + {0, 0, 0, 0}, // 0x06ba + {0, 0, 0, 0}, // 0x06bb + {0, 0, 0, 0}, // 0x06bc + {0, 0, 0, 0}, // 0x06bd + {0, 0, 0, 0}, // 0x06be + {0, 0, 0, 0}, // 0x06bf + {0, 0, 0, 0}, // 0x06c0 + {0, 0, 0, 0}, // 0x06c1 + {0, 0, 0, 0}, // 0x06c2 + {0, 0, 0, 0}, // 0x06c3 + {0, 0, 0, 0}, // 0x06c4 + {0, 0, 0, 0}, // 0x06c5 + {0, 0, 0, 0}, // 0x06c6 + {0, 0, 0, 0}, // 0x06c7 + {0, 0, 0, 0}, // 0x06c8 + {0, 0, 0, 0}, // 0x06c9 + {0, 0, 0, 0}, // 0x06ca + {0, 0, 0, 0}, // 0x06cb + {0xfbfc, 0xfbfd, 0xfbfe, 0xfbff} // 0x06cc = farsi yeh }; char_type const arabic_start = 0x0621; -char_type const arabic_end = 0x0652; +char_type const arabic_end = 0x06cc; /// Information about a single UCS4 character @@ -244,7 +365,7 @@ bool Encodings::is_arabic_special(char_type c) c == 0x0627 || c == 0x0629 || c == 0x062f || c == 0x0648 || (c >= 0x0630 && c <= 0x0632) || - c == 0x0649; + c == 0x0649 || c == 0x0698; } @@ -398,26 +519,30 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile) string const iconvname = lex.getString(); lex.next(); string const width = lex.getString(); - bool fixedwidth; + bool fixedwidth = false; if (width == "fixed") fixedwidth = true; else if (width == "variable") fixedwidth = false; - else + else { lex.printError("Encodings::read: " "Unknown width: `$$Token'"); + } + lex.next(); string const p = lex.getString(); - Encoding::Package package; + Encoding::Package package = Encoding::none; if (p == "none") - package = Encoding::none; + package = Encoding::none; else if (p == "inputenc") package = Encoding::inputenc; else if (p == "CJK") package = Encoding::CJK; - else + else { lex.printError("Encodings::read: " "Unknown package: `$$Token'"); + } + LYXERR(Debug::INFO) << "Reading encoding " << name << endl; encodinglist[name] = Encoding(name, latexname, iconvname, fixedwidth,