Поиск сообщества

Показаны результаты для тегов 'tfont'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • API интернет сервисов
    • ВКонтакте API
    • Google Maps API
    • Yandex деньги
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума
    • Правила форума
    • Нарушения правил форума
    • Предложения об организации форума
    • Проблемы
    • Функции форума
  • Видеокурсы
    • Основная информация
    • Курсы
    • Предложения и голосования за новые курсы
    • Вопросы

Категории

  • Курсы

Найдено: 4 результата

  1. Как рассчитать Baseline для выводимого текста?

    Добрый день! Столкнулся с проблемой вывода текста разного размера по одной линии. Не получается использовать BaseLine доступную для Firemonkey. Baseline - воображаемая прямая линия, проходящая по нижнему краю прямых знаков без учёта свисаний и нижних выносных элементов. В строке символы текста стоят на базовой линии, а нижние выносные элементы текста «свисают» с неё. Из описанного выше ясно, что выводимые символы должны лежать на это линии, но в реале как то все некорректно выводится. Сделал два примера VCL (черный фонт) и FireMonkey(черный полупрозрачный фонт), оказалось, что вывод текста осуществляется по разному, при одном и том же значении размера шрифта. Базовая линия в обоих примерах 356. Совмещаем отображение символов: GlyphsEqual.png Символы совпали, но базовая линия смещена. Совмещаем базовую линию: PosEqual.png Базовая линия совпала, как и верхний край контролов, а вот текст (серый) значительно ниже. А теперь собственно вопрос вопрос, где ошибка? Как рассчитать базовую линию для FMX? P.S. Про attributes у TTextLayout знаю. BaseLine.rar
  2. *** Небольшой обмен опытом *** Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками. function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; Функция для расчета размера прямоугольника, занимаемого однострочным текстом. Параметры: Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код: uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник. Параметры: Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код: uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; --- Также данные функции можно найти в этом юните
  3. Скачал шрифт но как добавить его в приложения и поставить по умолчанию не понимаю прошу помощи
  4. Пробую задать размер шрифта (TLabel.Font.Size) для TLabel. Но стиль и размер у метки остаются стандартными. Создаю объект так: MyLabel := TLabel.Create(Self); MyLabel.Position.X := 66; MyLabel.Position.Y := 8; MyLabel.Width := 231; MyLabel.Height := 18; MyLabel.Parent := ListBox1.ListItems[ListBox1.Count-1]; MyLabel.HitTest := False; MyLabel.Font.Size := 8; MyLabel.Font.Style := [TFontStyle.fsBold]; MyLabel.Trimming := TTextTrimming.ttCharacter; MyLabel.VertTextAlign := TtextAlign.taLeading; MyLabel.Text := 'Text';