Использование CSS font-family для выбора шрифтов Droid, не работающих на Android

Я обнаружил, что следующий HTML-код не работает на Android (он будет использовать только шрифт по умолчанию: Droid Sans. На рабочем столе он работает как ожидалось.

<p style='font-family: "Droid Sans",sans-serif;'>vând whisky și tequila, preț fix.</p> <p style='font-family: "Droid Sans Mono",monospace;'>vând whisky și tequila, preț fix.</p> <p style='font-family: "Droid Serif",serif;'>vând whisky și tequila, preț fix.</p> 

    У вас, вероятно, нет объявления @ font-face для других шрифтов в вашем css. Я думаю, у вас есть только один для Droid Sans. Вам нужен один для каждого шрифта. Например, в вашем css вы должны иметь:

     @font-face { font-family: 'DroidSans'; src: url('font/DroidSans-webfont.eot?') format('eot'), url('font/DroidSans-webfont.woff') format('woff'), url('font/DroidSans-webfont.ttf') format('truetype'), url('font/DroidSans-webfont.svg#webfontw7zqO19G') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'DroidSansMono'; src: url('font/DroidSans-Mono-webfont.eot?') format('eot'), url('font/DroidSans-Mono-webfont.woff') format('woff'), url('font/DroidSans-Mono-webfont.ttf') format('truetype'), url('font/DroidSans-Mono-webfont.svg#webfontSOhoM6aS') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'DroidSerif'; src: url('font/DroidSerif-webfont.eot?') format('eot'), url('font/DroidSerif-webfont.woff') format('woff'), url('font/DroidSerif-webfont.ttf') format('truetype'), url('font/DroidSerif-webfont.svg#webfontw7zqO19G') format('svg'); font-weight: normal; font-style: normal; } 

    И тогда в вашем коде ваша семья шрифтов должна быть такой же, как те, которые вы указали в css выше (например, font-family: «Droid Sans»; это не то же самое, что и семейство шрифтов: «DroidSans»)

     <p style='font-family: "DroidSans",sans-serif;'>vând whisky și tequila, preț fix.</p> <p style='font-family: "DroidSansMono",monospace;'>vând whisky și tequila, preț fix.</p> <p style='font-family: "DroidSerif",serif;'>vând whisky și tequila, preț fix.</p> 

    Попробуй и посмотри, как получится.

    Кажется, что Android распознает имена семей, определенные в файле system_fonts.xml ( fonts.xml до пряников). Например, чтобы получить Droid Serif, вы можете написать общий serif . См. Этот ответ для деталей.

    О, и есть причуда с «Droid Sans»: это одно имя в конфигурации с 4.0, но .ttf является символической ссылкой на Roboto.

    <Speculation> Я вижу, как рано в жизни Android кто-то сказал: «У нас будет только три шрифта, поэтому лучше, если разработчики будут использовать только общие имена, таким образом мы всегда можем их заменить» </ speculation>

    Но это несчастливо. Существует много причин, по которым фактический шрифт, который вы получите, может быть другим:

    • До 4.0 вы получаете семью Droid, после того как вы получите семью Roboto.
    • Firefox объединяет Open Sans и Charis SIL и использует их вместо этого.
    • Производители могут заменить 3 шрифта своими. EDIT: я не могу найти подтверждение, которое это действительно происходит.

    Во всех этих ситуациях было бы неплохо, если бы я мог ссылаться на конкретный шрифт по фактическому имени в стеке шрифтов. Увы, я не могу.