Про размер шрифта в см

PabloPablo Рязань
отредактировано 14:51 Раздел: FastReport 4.0
На просторах интернета обнаружил интересную формулу

Высота шрифта в дюймах = Размер шрифта (или Font.Size) / 72 --->
Высота шрифта в см = Размер шрифта (или Font.Size) *2,54 / 72

По таким расчетам высота шрифта 10 пт должна составлять 0,3527(7) см, включая высоту заглавных букв и "нижние хвостики".

Вопрос:
1. Подходит ли этот расчет для всех шрифтов или только для "правильных"?
2. Если "правильные" шрифты существуют, то относятся ли к ним: Arial, Arial Narrow, Times New Roman Cyr при использовании стилей Bold, Italic, Underline и их комбинаций?
3. Есть ли зависимость размера от установки принтера "Печатать True Type как растр"?

Комментарии

  • dron-sdron-s Россия
    отредактировано 14:51
    написал:
    1. Подходит ли этот расчет для всех шрифтов или только для "правильных"?
    что понимается под "правильным" шрифтом?
    чем Times New Roman не правильный шрифт?

    а если по существу, то
    //canvas.Font.PixelsPerInch - точек на дюйм
    // 1 дюйм =2,54 см.
    // Pixels - количество пикселей
    z:=(pixels/canvas.Font.PixelsPerInch*2.54);
    
  • PabloPablo Рязань
    отредактировано February 2009
    DRON написал: »
    а если по существу, то
    //canvas.Font.PixelsPerInch - точек на дюйм
    // 1 дюйм =2,54 см.
    // Pixels - количество пикселей
    z:=(pixels/canvas.Font.PixelsPerInch*2.54);
    

    мой вопрос как Font.Size превращается в сантиметры при печати и зависит ли размер шрифта (высота) от его названия и текущих настроек драйвера принтера

    а как пикселы преобразуются в дюймы при данном разрешении (и наоборот) и тем более дюймы в сантиметры я думаю все знают
  • dron-sdron-s Россия
    отредактировано 14:51
    ради бога
    procedure TForm1.Button1Click(Sender: TObject);
    var 
      z:real;
      s:string;
    begin
    label1.Caption:='0000';
    //Printer.BeginDoc;
    Printer.Canvas.Font:=label1.Font;
    z:=Printer.Canvas.TextWidth(label1.Caption)/Printer.Canvas.Font.PixelsPerInch*2.54;
    //Printer.Canvas.TextOut(100,100,label1.Caption);
    //Printer.EndDoc;
    str(z:0:5,s);
    label2.Caption:=s;
    end;
    
    можете раскомментировать строки и напечатать эти '0000', взять линейку и померить, затем сравнить с числом в Label2 и убедиться что это есть истина.
    Если верить Word'у (шкала взята оттуда)
    Только надо учесть, шрифт канвы можент не совпадать с ширтом контрала !
  • PabloPablo Рязань
    отредактировано February 2009
    Мир полон идиотов. Не знаешь ответ - не пиши.

    Интересует теория вопроса: есть ли отличия между шрифтами по высоте? драйвер принтера печатает также как и Windows? как расчитывается высота?

    Линейкой и "на глазок" не подходит.

    А текст "0000" не охватывает по высоте весь печатаемый текст. Строка "000yy" по-любому будет выше.
  • LOGic_BBSLOGic_BBS Казань
    отредактировано 14:51
    Я не знаю как там с теорией, не когда микрометром шрифт не мерил, но на двух разных принтерах напечатанный один и тот же документ выглядит немножко по разному, именно в размерах шрифта, даже на глазок.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.