Перенос слов в WPF: пропущенные слова при использовании специального шрифта

Я использую специальный шрифт, известный как Pigiarniq , в приложении WPF. Я обнаружил, что время от времени слова исчезают из текстовых блоков, в которых используется этот шрифт. Слова, которые исчезают, появились бы в конце строки, в которой они находятся, или, возможно, на следующей строке, что заставляет меня думать, что что-то не так с переносом текста. В конце концов (после значительных трудностей) я изолировал проблему от небольшого фрагмента кода (ПРИМЕЧАНИЕ: это всего лишь тест, подтверждающий, что проблема возникает. Это не часть моей программы):



    
        
        
    
    
    
        
             You do not need to enter both manually. Rates are calculated using true depositional 
            (uncompacted) thicknesses, rather than measured present-day thicknesses.
        
    
    


Слово «толщина», которое встречается после "(несжатый)" не появляется. Если я вручную изменю размер окна с помощью дескриптора окна, оно появится снова.

ПРИМЕЧАНИЕ. Я поместил TextBlock в элемент Grid выше, потому что иногда эта проблема возникает, когда TextBlock находится в Grid. В другом случае это было внутри InlineUIContainer. Были и другие случаи.

Я обнаружил, что такого поведения не происходит, если я задаю ширину явно, например, если я подписываюсь на событие Loaded в TextBlock:

private void textBlock1_Loaded(object sender, RoutedEventArgs e)
    {
        textBlock1.Width = textBlock1.ActualWidth;
        //textBlock1.Width = Double.NaN;  //if you leave this in, you get the bad behaviour
    }

Очень странно! Есть идеи, как этого не допустить? Мой босс очень хотел бы использовать этот шрифт, поэтому я не могу просто выбрать другой шрифт (я никогда не видел, чтобы это происходило с любым другим шрифтом). Мне также не очень нравится следить за каждым изменением макета и соответствующим образом изменять размер каждого текстового блока, который использует Pigiarniq.

5
задан skybluecodeflier 30 March 2011 в 15:22
поделиться