예제 #1
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();
        }
예제 #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();
            }
        }