Hướng dẫn cài đặt Emoji có màu sắc trên Arch Linux

Emoji hay còn gọi là biểu tượng cảm xúc đang rất phổ biến, do nó hỗ trợ nhiều nền tảng, thống nhất về chủng loại số lượng vì được ủy ban Unicode quản lý và phê duyệt. Việc sử dụng emoji hiện nay như là “gia vị” không thể thiếu trong các đoạn văn bản, đặc biệt là trên các mạng xã hội. Chúng được sử dụng giống như biểu tượng cảm xúc và tồn tại trong nhiều thể loại, bao gồm các biểu hiện trên khuôn mặt, các đối tượng thông thường, địa điểm và loại thời tiết và động vật. Mặc dù về định nghĩa, mã, cách thức sử dụng được quy định bởi một tổ chức, tuy nhiên emoji tồn tại với rất nhiều biến thể do các hãng, công ty lớn thiết kế lại với phong cách riêng của họ. Ở thời điểm hiện tại, có 7 biến thể lớn của emoji tương ứng với Apple, Google, Samsung, Microsoft, Facebook, EmojiOne và Twitter.

Các biến thể của emoji bởi các công ty, tập đoàn lớn
Các biến thể của emoji bởi các công ty, tập đoàn lớn

Trên các nền tảng riêng biệt của các công ty chủ quản như Windows, MacOS, Android, iOS… thì không vấn đề, nhưng đối với Linux thì sử dụng emoji đặc biệt là các emoji có màu sắc lại là vấn đề lớn. Cách đây vài tháng, sử dụng emoji có màu sắc là không thể do lỗi của gói cairo không hỗ trợ hiển thị hình ảnh định dạng png trong font OpenType là các hình ảnh của biểu tượng cảm xúc. Vấn đề này đã được khắc phục từ phiên bản 1.15.8.
Tôi không phải là người quá yêu thích emoji nhưng cũng sử dụng thường xuyên. Nhìn emoji với đầy đủ màu sắc trên màn hình sẽ khơi gợi nhiều cảm xúc hơn và cảm thấy thật sự vui vẻ. Gần đây, Google thông báo rằng họ thay đổi thiết kế emoji của họ từ phong cách blob (thật sự tôi không ưa nổi kiểu vẽ này) về phong cách khuôn mặt tròn như các hãng khác. Sau khi điện thoại được cập nhật lên bản Androi 8 Oreo, bộ emoji mới rất ấn tượng và dễ thương là lí do chính tôi muốn mang nó lên Linux.
Bạn có thể xem cách mà Google làm biến dạng Emoji theo quan điểm của họ qua các phiên bản của Android thế nào qua hình ảnh dưới đây:
Goole Emoji trên Android từ phiên bản 4.3 tới 8.0
Goole Emoji trên Android từ phiên bản 4.3 tới 8.0

Nhìn hình thôi, bạn cũng hiểu vì sao nhiều người ủng hộ và thấy thích thú với phong cách thiết kế của bộ Emoji 8.0 mới này, trong đó có tôi.
Trong bài viết này, tôi sẽ trình bày cách thức tôi thay đổi font emoji mặc định toàn hệ thống sang hệ font Noto Color Emoji của Google.
Hệ thống:

  • Arch Linux
  • GNOME, XFCE4
  • Hỗ trợ tốt trên hầu hết các trình duyệt: Firefox, Chrome, Chromium, Opera, Vivaldi, các phần mở rộng Emoji của hệ thống, nói chung là khoảng 98%

Mục tiêu đạt được

Google Oreo Emoji có màu sắc trên Arch Linux
Google Oreo Emoji có màu sắc trên Arch Linux

Các bước cài đặt gói font và thiết lập tập tin cấu hình để hiển thị Emoji có màu sắc trên Linux

Mặc định hệ thống sử dụng biểu tượng emoji từ font Dejavu SansSymbola. Biểu tượng cảm xúc dạng đen trắng và khá thô kệch. Như đã đề cập đến trong phần đầu, tôi ấn tượng với bộ font emoji mới của Google nên trong bài viết này sẽ sử dụng nó như một ví dụ chính. Bạn có thể thay thế nó với các font của các bộ Emoji tương ứng như Twitter Emoji, Apple Emoji, EmojiOne, … Để có font Noto Color Emoji cần cài gói noto-fonts-emoji. Trong quá trình thay thế font mặc định bằng font mới, tôi sử dụng Firefox (trình duyệt mặc định) để kiểm thử, việc thay thế không được như ý, gặp rất nhiều xung đột khác nhau, từ sai font, không hiển thị đúng, mất dấu khoảng trắng (space), các biểu tượng chèn lên nhau và đặc biệt là luôn bị thay thế bởi 1 bộ biểu tượng font EmojiOne cũ không đầy đủ. Loay hoay hơn 2 ngày, bơi với rất nhiều thông tin, snipet cũng như các loại cấu hình khác nhau mà không được, về sau mới biết bản thân Firefox có một font EmojiOneMozilla.ttf nằm tại /usr/lib/firefox/fonts được đính kèm bản phân phối từ phiên bản 50 cả cho Linux và Windows. Để các thiết lập hoạt động tốt, bạn cần xóa bỏ hoặc loại bỏ font này.

# rm /usr/lib/firefox/fonts/EmojiOneMozilla.ttf

Vấn đề thứ hai là trên Linux có rất nhiều thiết lập font khác nhau chồng chéo, ưu tiên theo thứ tự khác nhau của tập tin cấu hình khiến cho việc hiển thị các kí tự bị sai lệch về vị trí và kích thước dẫn đến việc sử dụng emoji trở thành kì cục và quái gở thay vì thấy vui vẻ và đầy cảm xúc.
Haizzz ? thật là phức tạp phải không? Yên tâm đi, cấu hình này được tôi làm sẵn thử nghiệm nhiều lần cho đến khi các biểu tượng hiển thị đúng trên máy tôi. Xin nhấn mạnh lần nữa là làm việc hoàn hảo trên máy tính của tôi, ? việc của bạn chỉ là lưu tập tin này xuống đúng vị trí và kiểm tra kết quả là được. Đơn giản hơn nữa, bạn chỉ cần copy đoạn mã sau, dán vào Terminal bấm Enter là được thôi.

$ wget https://www.narga.org/go/51-noto-color-emoji-conf/ && \
mv 51-noto-color-emoji.conf.xml ~/.config/fontconfig/conf.d

Thông thường, sau khi thay đổi font hoặc các thiết lập font hệ thống, cần phải tạo bản lưu đệm mới bằng lệnh fc-cache -f -v tuy nhiên hiện nay thì các hệ thống mới đều tự động refresh sau vài giây cho nên sự thay đổi sẽ diễn ra rất nhanh mà không cần chạy lệnh trên. (Thậm chí việc chạy lệnh nói trên sẽ lâu hơn rất nhiều).

Các gói font emoji khác

  • EmojiOne: ttf-emojione
  • Twitter Emoji: twemoji
  • Apple Emoji
  • Samsung Emoji
  • Google Emoji: noto-fonts-emoji

Lưu ý: Một số phần mềm do sử dụng các thư viện cũ hoặc sử dụng font riêng nên sẽ hiển thị emoji không đúng hoặc sai lệch.
Nếu bạn muốn biết cụ thể nội dung của tập tin cấu hình hoặc muốn tự mình tạo / thay đổi nó thay vì làm tự động như dòng lệnh trên, bạn có thể xem tại trang Github Gist của tôi hoặc nội dung đính kèm ở dưới.