Как я могу использовать иконки Font Awesome на HTML-странице в кодировке UTF-16? - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь использовать значки Font Awesome на моих HTML-страницах UTF-16, но значки не отображаются нормально из-за кодировки.Идя шаг за шагом, это прекрасно работает:

<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">

  <style>
    .ololo::after {
    content: "\f007";
    font-family: 'Font Awesome\ 5 Free';
    }
  </style>

</head>
<body>

  <h1><i class="fas fa-american-sign-language-interpreting"></i></h1>
  <h1 class="ololo"></h1>

</body>
</html>

Обе иконки хорошо отображаются, когда <meta charset="UTF-8">.Но когда я переключаю страницу на <meta charset="UTF-16">, значки Font Awesome просто исчезают, не оставляя их следов на экране.Итак, вопрос в том, как сделать так, чтобы значки Font Awesome правильно отображались на HTML-странице в кодировке UTF-16?

1 Ответ

0 голосов
/ 05 мая 2019

Единственный способ заставить Font Awesome работать на странице UTF-16 - это преобразовать указанный CSS-файл Font Awesome из UTF-8 в UTF-16 .Для этого сначала загрузите пакет Font Awesome на свой компьютер, затем возьмите файл css / all.min.css и преобразуйте его в UTF-16.Этот фрагмент Java-кода хорошо выполняет свою работу:

import java.nio.file.*;
import java.io.*;

public class Convrtr {

    public static void main(String[] args) {

    Path source = FileSystems.getDefault().getPath("/home/absolute/path/to/fontawesome/css","all.min.css");
    Path result = FileSystems.getDefault().getPath("/home/absolute/path/to/fontawesome/css","awesome.min.css");

    try(Reader r = new InputStreamReader(new FileInputStream(source.toFile()), "UTF-8");
        Writer w = new OutputStreamWriter(new FileOutputStream(result.toFile()), "UTF-16")) {

    char buffer[] = new char[2048];
    int length;
    while ((length = r.read(buffer, 0, buffer.length)) != -1) {
        w.write(buffer, 0, length);
    }
    } catch (IOException e) {
        System.err.print("IO Error");
    }

    }

}

После запуска этого кода вы получите новый awesome.min.css файл, который является тем же старым all.min.css в кодировке UTF-16.И вам на самом деле не нужно менять его имя (я сделал это только из-за работы в той же папке).С этого момента эта страница будет правильно отображать Font Awesome Icons:

<!DOCTYPE html>
<head>
  <meta charset="UTF-16">
  <link rel="stylesheet" href="fontawesome/css/awesome.min.css"/>

  <style>
    .ololo::after {
    content: "\f007";
    font-family: 'Font Awesome\ 5 Free';
    }
  </style>

</head>
<body>

  <h1><i class="fas fa-american-sign-language-interpreting"></i></h1>
  <h1 class="ololo"></h1>

</body>
</html>
...