Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать все размеры шрифта? 
V
    Опции темы
Alexeyt
  Дата 22.2.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: нет
Всего: 2



Как узнать все валидные размеры шрифта? Не обязательно TrueType!
То, что выдается в диалоге выбора шрифта.

PM WWW   Вверх
MBo
Дата 22.2.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 1
Всего: 18



EnumFontFamilies
TrueType - масштабируемые шрифты, поэтому смысл получать набор размеров есть в основном для растровых
PM MAIL   Вверх
Alexeyt
Дата 22.2.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: нет
Всего: 2



EnumFontFamilies не подходит. Почему, см ниже.

Это сообщение отредактировал(а) Alexeyt - 23.2.2007, 21:52
PM WWW   Вверх
Alexeyt
Дата 22.2.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: нет
Всего: 2



http://www.excode.ru/art1373p1.html

здесь нашел пример, но непонятно: как получить все размеры *одного* шрифта? Этот пример показывает все семейства каждого шрифта, по одному размеру на каждое семейство. А все размеры получить как?



PM WWW   Вверх
MBo
Дата 22.2.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 1
Всего: 18



вот что для Courier показывает - три размера. Столько же позволяет выбрать для этого шрифта и редактор (только числа другие - 10, 12, 15  - это связано с различием Height и Size)

Name: Courier
Size: 13
Weight: 400
This is a raster font
Name: Courier
Size: 16
Weight: 400
This is a raster font
Name: Courier
Size: 20
Weight: 400
This is a raster font
PM MAIL   Вверх
Alexeyt
Дата 23.2.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 15.9.2006
Где: около Москвы

Репутация: нет
Всего: 2



MBo, 
Ну так неправильно. У Courier есть и другие размеры: меньше 13 и больше 20.
Для Terminal у меня показал 2 или 3 варианта, хотя можно ставить много размеров от 5 до 72 и больше.

All
В общем, я пока делаю так: перебираю все размеры от 1 до 72, выбираю только те, у которых различается "высота" (GetTextMetrics).
Вроде нормально. Только не совпадает с тем, что в диалоге выбора шрифта мы видим. Код ниже.


Код

function FontHeight(Canvas: TCanvas): integer;
var
  Metric: TTextMetric;
begin
  if GetTextMetrics(Canvas.Handle, Metric)
    then Result:= Metric.tmHeight
    else Result:= Abs(Canvas.Font.Height);
end;

procedure TForm1.ListFonts(ACanvas: TCanvas);
var
  i, H, LastH: integer;
begin
  List.Items.Clear;

  ACanvas.Font.Size:= 1;
  LastH:= 0;

  for i:= 1 to 72 do
    begin
    H:= FontHeight(ACanvas);
    if H <> LastH then
      begin
      LastH:= H;
      List.Items.Add(IntToStr(ACanvas.Font.Size));
      end;
    ACanvas.Font.Size:= ACanvas.Font.Size + 1;
    end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  ListFonts(Label1.Canvas);
end;



Это сообщение отредактировал(а) Alexeyt - 23.2.2007, 21:53
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.