Intereting Posts
Андроид java ошибки реализации .. они документированы? Как настроить WebChromeClient для открытия новой страницы в том же представлении? Зачем использовать onDestroy (), если он не гарантированно называется? Java.lang.IllegalAccessError: класс ref в предварительно проверенном классе разрешен для неожиданной реализации при запуске тестового проекта? Как использовать пользовательский шрифт в виджетах? Пользовательский шрифт на Android Есть ли способ получить фрагмент сверху стека? Android: команда не найдена Как работать с пользовательским размером в Google Analytics v3 для Android-приложения Mockito – что делает метод проверки? Дублирующие файлы, скопированные в APK META-INF / maven / com.squareup / otto / pom.xml Android BLE неожиданно и неоднократно подключается к периферийным устройствам Можно ли отключить уведомления об обновлениях прошивки Android? Где сохранен пакет onSaveInstanceState? Прослушивать нажатие и перетаскивание значения и функции соответственно

Как использовать собственный шрифт с помощью WebView

Теперь я хочу отобразить некоторые символы юникода, и я использовал тег: <font face=" Arial">something here</font> . Но похоже, что WebView не может найти шрифт Arial, потому что я могу видеть только символы НЛО. Должен ли я копировать arial.ttf где-нибудь или как я могу использовать этот шрифт TrueType с помощью WebView ? Благодарю.

Solutions Collecting From Web of "Как использовать собственный шрифт с помощью WebView"

loadData тоже не работает для меня, поэтому я использовал file:///android_asset в пути src.

Он работал с loadDataWithBaseURL !

В этом примере я изменил CSS на:

 @font-face { font-family: 'feast'; src: url('fonts/feasfbrg.ttf'); } body {font-family: 'feast';} 

Затем используйте путь к ресурсам в качестве базового URL:

 loadDataWithBaseURL("file:///android_asset/",myhtml,"text/html","utf-8",null); 

По-видимому, вы можете использовать пользовательский шрифт для WebView , как предлагалось выше @raychung. Но это не сработает для 2.1 ( здесь сообщается об ошибке ). Это должно работать на 1,5, 1,6 и 2,2.

Вы можете поместить свой собственный TTF-файл шрифта в папку /assets , а затем в свой файл CSS, который вы можете добавить:

 @font-face { font-family: "myIPA"; src: url('IPA.TTF'); } .phon, .unicode { display: inline; font-family: 'myIPA', Verdana, sans-serif; font-size: 14pt; font-weight: 500; font-style:normal; color: black; } 

Теперь вы можете ссылаться на этот стиль шрифта в своем HTML-файле.

 @font-face { font-family: 'MyCustomFont'; src: url('/assets/fonts/MaycustomFont.ttf') } 

Меня устраивает.

 ->src ->assets ->fonts ->MaycustomFont.ttf ->.. ->res 

Вы можете заставить его работать со всеми версиями, скопировав файл шрифта из ваших ресурсов в папку с файлами при первом запуске приложения, а затем ссылайтесь на него как:

 "@font-face { font-family: cool_font; src: url('file://"+ getFilesDir().getAbsolutePath() + "/cool_font.ttf'); }" 

Это не сработало для меня, мне пришлось связать шрифт на моем веб-сервере вместо ссылки на локальный файл:

  @font-face { font-family: 'feast'; src: url('http://yoursite.com/tutorial/css/feasfbrg.ttf'); } body {font-family: 'feast';} 

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

  String myCustomStyleString="<style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/BYEKAN.ttf\")}body,* {font-family: MyFont; font-size: medium;text-align: justify;}</style>"; webView.loadDataWithBaseURL("", myCustomStyleString+"<div style=\"direction:rtl\">"+myHtm+"</div>", "text/html", "utf-8", null); 

Как сказал Фелипе Мартинес Карреньо, вы можете копировать из активов, и это сработает.

Вы можете сослаться на это более подробно

Основная идея заключается в том, что веб-страница должна иметь доступ к файлу шрифта. Вот почему предлагаемое оригинальное решение работает, когда и файл HTML, и файл шрифта находятся в папке с ресурсами, и от него загружается HTML-файл.

Это не функция Android, это CSS, поэтому она должна работать с любым Android SDK.

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

Я вполне счастлив просто иметь содержимое HTML и файл шрифта в активах и загружать оттуда.

 webView.loadUrl("file:///android_asset/content.html"); 

Использовать css

  @ Font-face {
      Font-family: cool_font;
      Src: url ('cool_font.ttf');
     }