Страницы: 1
RSS
Вручную задать шрифт для символов, которые не отображаются основным шрифтом
 
Доброе время

Суть проблемы:
Есть текстовая строка, содержащая как латиницу, так и арабские знаки. Основной шрифт, который применяется к строке - Ubuntu. Так как он не содержит в своём наборе арабицы, то она отображается с помощью другого шрифта - конкретно Arial. Arial меня не устраивает, так как стиль знаков арабицы там мелкий и рукописный, а мне необходим такой как в Arial Unicode - то есть, более читаемый и печатный.

Попытки решения:
- Я попытался автоматически разделить строку на две части (латинскую и арабскую), арабской присваивать Arial Unicode, а потом автоматически их соединять - но в результате получал всю ту же замену на Arial. (Вручную менять шрифты фрагмента внутри целой строки нереально, так как таких строк более 300 000).
- Я покопался в настройках как самого Excel, так и системы в целом (разделы шрифты и персонализация), но не нашёл там подобных настроек.
- Я переименовал шрифт Arial Unicode MS в AAA - Arial Unicode MS, в результате чего этот шрифт оказался самым первым в папке Шрифты, но это тоже не помогло.

Прошу помочь.
 
Цитата
Hauk написал: таких строк более 300 000
а хотя-бы ОДНУ, для примера показать в файле пожалели? Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
 
Пожалуйста. Прикладываю ссылку на изображение gif, так как Ubuntu шрифт нестандартный и обычно в системе отсутствует. Сверху то как не нужно, снизу  как нужно.

https://yadi.sk/i/nvPqXg5Tuy8SH
 
В модуль листа. Проверить не на чем - нет шрифта Ubuntu. При изменении ячеек в первом столбце символы шрифта НЕ Ubuntu должны меняться на Arial Unicode MS
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("A")) Is Nothing Then
Application.EnableEvents = False
    For I = 1 To Len(Target)
        With Target.Characters(I).Font
            If .Name <> "Ubuntu" Then .Name = "Arial Unicode MS"
        End With
    Next
Application.EnableEvents = True
End If
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал: должны меняться на
Попробовал на шрифте Calibri. Меняется если вся строка написана каким-то одним шрифтом. Если шрифт у символов в одной ячейке разный, то макрос не срабатывает
Согласие есть продукт при полном непротивлении сторон
 
Благодарю. О макросе побуквенной проверке и замене шрифтов я тоже думал.

Но, к сожалению, это неподходящее решение.  Данные из этой таблицы будут передаваться макросом (.FormulaR1C1=...) в следующие таблицы (их несколько, и везде требуется чтобы данные строк отображались визуально одинаково), и шрифт снова поменяется на Ubuntu + Arial (проверено). Копировать и вставлять сначала значения, а потом форматы на таком объёме строк занимает критически много времени.

Поэтому хотелось бы решить вопрос системно. То есть понять, как Excel устанавливает очерёдность применения шрифтов, и заставить его поступать иначе.
 
В конечном итоге, я могу сделать основным шрифтом именно Arial Unicode, но Ubuntu меня с точки зрения дизайна устраивает больше.
Страницы: 1
Читают тему
Наверх