Ejemplo n.º 1
0
 private bool IsPunctuation(UChar letter)
 {
     return
         (CC.Cl01(letter) || CC.Cl02(letter) || CC.Cl03(letter) ||
          CC.Cl04(letter) || CC.Cl05(letter) || CC.Cl06(letter) ||
          CC.Cl07(letter));
 }
 private bool IsPunctuation(string letter)
 {
     return(letter.Length == 1 &&
            (CC.Cl01(letter[0]) || CC.Cl02(letter[0]) || CC.Cl03(letter[0]) ||
             CC.Cl04(letter[0]) || CC.Cl05(letter[0]) || CC.Cl06(letter[0]) ||
             CC.Cl07(letter[0])));
 }
Ejemplo n.º 3
0
        private void SetAppropriateTextMatrix(UChar letter, float voffset, PdfContentByte cb)
        {
            var ytlm = MyYTLM;

            if (_isPsuedoVertical)
            {
                if (CC.Cl06(letter) ||
                    CC.Cl07(letter))
                {
                    //句読点を平行移動。
                    cb.SetTextMatrix(_xtlm + _fontSize * (1F / 2 + 1F / 8), ytlm + _fontSize * (1F / 2 + 1F / 8) + voffset);
                }
                else if (CC.Cl11(letter))
                {
                    //小書きの仮名を平行移動。
                    cb.SetTextMatrix(_xtlm + _fontSize / 8, ytlm + _fontSize / 8 + voffset);
                }
                else if (CC.Cl01(letter))
                {
                    //始め括弧を回転、平行移動
                    cb.SetTextMatrix(0F, -1F, 1F, 0F, _xtlm + _fontSize / 2, ytlm);
                }
                else if (letter.CodePoint == char.ConvertToUtf32("ー", 0))
                {
                    //音引きを回転、かつ左右反転
                    cb.SetTextMatrix(0F, -1F, -1F, 0F, _xtlm - _fontSize / 2, ytlm - _fontSize / 2);
                }
                else if (letter.CodePoint == char.ConvertToUtf32("—", 0)) //part of Cl08)
                {
                    //エムダッシュを回転
                    cb.SetTextMatrix(0F, -1F, 1F, 0F, _xtlm + _fontSize * (1F / 2F + 1 / 8F), ytlm - _fontSize / 2);
                }
                //TODO: 毎回 UString 作らない UChar[] で持つ。
                else if (
                    CC.Cl02(letter) ||
                    (new UString("―…‥").Contains(letter)) ||                     //part of Cl08
                    CC.Cl10(letter) ||
                    (new UString("~+±=-÷≠:;‘’“”<>≦≧_|→↓←↑⇒⇔").Contains(letter))) //その他転置すべき記号。よく使いそうなものだけ
                {
                    //それ以外の記号を回転
                    cb.SetTextMatrix(0F, -1F, 1F, 0F, _xtlm + _fontSize / 2, ytlm - _fontSize / 2);
                }
                else
                {
                    cb.SetTextMatrix(_xtlm, ytlm + voffset);
                }
            }
            else
            {
                cb.SetTextMatrix(_xtlm, ytlm + voffset);
            }
        }
Ejemplo n.º 4
0
 public static SpaceType GetSpaceType(this UChar letter)
 {
     if (CC.Cl07(letter) || CC.Cl06(letter) || CC.Cl02(letter))
     {
         return(SpaceType.Closing);
     }
     else if (CC.Cl01(letter))
     {
         return(SpaceType.Opening);
     }
     else if (CC.Cl04(letter))
     {
         return(SpaceType.DividingPunctuation);
     }
     else if (CC.Cl05(letter))
     {
         return(SpaceType.MiddleDots);
     }
     else
     {
         return(SpaceType.Normal);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 行末禁則
 /// </summary>
 private static bool DoViolateLineEndProhibitionRule(UChar proceeding)
 {
     return(CC.Cl01(proceeding));
 }