Sử dụng các ký tự đặc biệt trong Windows Phone

Sử dụng các ký tự đặc biệt trong Windows Phone

Chào các bạn, như chúng ta đã biết một bộ font chữ ngoài những ký tự latin bình thường ra thì tụi nó còn có một đống các kí tự não tim chim bướm đủ các thể loại. Đống kí tự này có điểm đặc biệt là bạn chẳng thể nào gõ chúng ra một cách dễ dàng. Thấy đâu đó rồi copy và paste hay đại loại thế.

Vậy phải làm sao nếu bạn muốn mang đống này vào Windows Phone (WP)?

Rất đơn giản, đầu tiên bạn mở Character Map lên, chọn bộ font  mà bạn khoái, tiếp theo chọn kí tự bạn thích (ví dụ mình thích kí tự tròn tròn như này trong bộ font Segoe UI), sau đó Select rồi Copy, và bạn đã có kí tự đó trong clipboard, cứ vào xaml và paste vào bất cứ đâu bạn thích.

Tuy nhiên, làm như thế thì chả hay tí nào. Nhất là khi bộ font Consolas nó chả hỗ trợ kí tự này, đâm ra mình nhìn vào xaml chả có gì khác ngoài một ô vuông rất là kì cục -_-

<TextBlock x:Name="MyTextBlock"
           FontFamily="Segoe UI"
           FontSize="150"
           Text="Ꙩ" />

Thế nên thay vì copy và paste, bạn hãy nhìn xuống góc dưới của cửa sổ Character Map, bạn có thấy dòng U+… không? Đó, chính y và đồng bọn, nó chính là mã hexa của kí tự trong bộ font.

Vậy dùng nó như thế nào? Rất đơn giản, bạn chỉ việc đổi nó thành XML character entity (sorry cái này mình không biết dịch làm sao :'(), bằng cách dùng cú pháp &#x[hex]; hoặc &#[dec]; (nhớ có dấu ‘;’ ở cuối nha) rồi nhét vào là được. Cụ thể, kí tự mình khoái nó có mã hexa là A668 thì mình có thể dùng một trong 2 cái &#xa668; hoặc &#42600; (A66816 = 4260010) nhét vào xaml, cái nào cũng chạy.

<TextBlock x:Name="MyTextBlock"
           FontFamily="Segoe UI"
           FontSize="150"
           Text="&#xa668; &#42600;" />

 

Đấy là nhét trực tiếp vào xaml, vậy nếu muốn sinh từ code C# thì sao? Tất nhiên là bạn vẫn có thể copy và paste từ cái Character Map ban đầu và cũng tất nhiên, bạn sẽ chỉ thấy ô vuông y như bên xaml. Giải pháp thì cũng rất đơn giản, bạn đổi cái mã hexa của nó thành Unicode escape sequence (cái này mình cũng không biết dịch làm sao nốt :'() theo cú pháp \u[hex]. Cụ thể, kí tự của mình nếu muốn sinh từ code thì chỉ việc chèn \ua668 vào là được. Nó sẽ vẫn cho ra kết quả như khi chèn bên xaml.

MyTextBlock.Text = "\ua668";

Vấn đề là, tại sao chúng ta nên lưu ý đến các kí tự này? Bạn nào làm app nếu chăm chút phần design sẽ thấy, muốn UI gọn gàng mà vẫn truyền tải đủ thông tin thì chỉ có nước dùng các icon thay vì dùng text. Nhưng việc dùng icon thì rất là mệt, bạn phải quản lý một đống file, nhớ một đống tên file để gõ cho nhanh, cân nhắc độ phân giải của icon để vừa đủ xài mà vẫn phải tối ưu dung lượng, chưa kể nếu bạn muốn đổi màu của icon thì chắc chỉ có nước mở photoshop rồi đổi màu rồi lại nhét thêm một icon nữa vào project rồi lại link một cái icon mới,… blah blah blah rất là dài dòng và mệt mỏi.

Tuy nhiên với cách làm này, cộng với việc dùng các bộ font tượng hình (ví dụ như Font Awesome), việc design sẽ trở nên rất nhẹ nhàng. Và nhớ là mấy cái này dù thế nào đi nữa thì tụi nó vẫn cũng chỉ là text, mà đã là text thì bạn muốn đổi màu, đổi size kiểu quái gì mà lại chả được, không những thế mà còn tùy biến được một đống các thứ mà nếu dùng icon thì gần như không thể.

Thế thôi, hy vọng bài viết của mình giúp ích cho bạn được chút gì đó, chúc các bạn vui vẻ!

YOLO \m/

 

0 thoughts on “Sử dụng các ký tự đặc biệt trong Windows Phone

Leave a Reply

Your email address will not be published. Required fields are marked *