Nano Hash - криптовалюты, майнинг, программирование

CoreText добавляет дополнительное пространство к последней строке каждого абзаца.

Я показываю эту строку (обратите внимание на разрывы):

CONSEJO
NACIONAL
PARA LA
CULTURA
Y LAS ARTES

Я настроил NSAttributedString для постоянной высоты строки до 26 пунктов, используя код, предложенный яблоком здесь:

CGFloat lineSpacing = 26;
CTTextAlignment theAlignment = kCTLeftTextAlignment;

CTParagraphStyleSetting theSettings[3] = 
{
    {kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineSpacing},
    {kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineSpacing},
    {kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment },
};

Но в последней строке есть лишнее место:

Если я вручную добавляю ПРОБЕЛЫ между словами, я получаю ожидаемый результат, поэтому при печати:

CONSEJO            NACIONAL                    PARA LA                                                                CULTURA                                                         Y LAS ARTES

Это показывает это (обратите внимание, что в последней строке нет дополнительного интервала):

Это неустойчивое решение, так как я не хочу вручную изменять все строки, чтобы добавлять пробелы в зависимости от размера кадра.

Я тестировал несколько месяцев и не смог решить эту проблему, последняя строка всегда занимает больше места.

Я также экспериментировал с \r, чтобы увидеть, дает ли это другие результаты, но он все равно добавляет дополнительное пространство, отображая:

Consejo\rNacional\rpara la\rCultura\ry las Artes

Произведено:

[Влево, используя \r] [Вправо, используя ПРОБЕЛ]

[Здесь все синие блоки одного размера]

Так что места меньше, но все же больше, чем должно быть.

CoreText должен иметь возможность обрабатывать простую строку, подобную этой.

Добавление пробелов недостаточно хорошо (по нескольким причинам), должен быть способ взять это под контроль.

Как вы думаете, в чем проблема?


Ответы:


1

Я не вижу изображения, но я думаю, что вы столкнулись с той же проблемой, с которой я столкнулся недавно, см. этого.

Вы можете использовать CTTypesetter и CTTypesetterSuggestClusterBreak для ручной обработки разрывов строк. Я использую размер шрифта как высоту строки, добавляю межстрочный интервал при рисовании строк вручную, и все работает нормально.

11.05.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..