예제 #1
0
 public override void PrintBy(Printing.IPrinter printer)
 {
     var restoreStart = printer.StorePositionAndFont();
     Array.ForEach(_baseText, x => x.PrintBy(printer));
     printer.Space(_appendingLength);
     PrintRuby(printer, restoreStart);
 }
예제 #2
0
 private void PrintRuby(Printing.IPrinter printer, Printing.PrinterMemento restoreStart)
 {
     var restoreEnd = printer.StorePositionAndFont();
     try
     {
         restoreStart();
         float bodyFontSize = printer.FontSize;
         float rubyFontSize = bodyFontSize / 2; //TODO: 設定を統一するか、書式情報として運搬
         printer.LineFeed(-(bodyFontSize + rubyFontSize) / 2);
         printer.FontSize = rubyFontSize;
         Array.ForEach(_rubyText, x => x.PrintBy(printer));
     }
     finally
     {
         restoreEnd();
     }
 }
예제 #3
0
        public override void PrintBy(Printing.IPrinter printer)
        {
            Printing.PrinterMemento restoreStart = null;
            bool canAddEmphasisDots = CanAddEmphasisDots();

            if (canAddEmphasisDots) restoreStart = printer.StorePositionAndFont();

            _decoratee.PrintBy(printer);

            if (!canAddEmphasisDots) return;

            var restoreEnd = printer.StorePositionAndFont();
            {
                restoreStart();
                var baseFontSize = printer.FontSize;
                printer.LineFeed(-baseFontSize / 2 - correction);
                printer.Space(_decoratee.Offset);
                printer.PrintJapaneseLetter(sesami, baseFontSize);
            }
            restoreEnd();
        }