Hiển thị kết quả tìm kiếm từ 1 đến 2 trên tổng số: 2
  1. #1
    Tham gia ngày
    05 2006
    Nơi Cư Ngụ
    TP HCM
    Bài gởi
    1,462
    Cảm ơn
    1,172
    Được cảm ơn 16,176 lần trong 1,298 bài viết
    Hai2Hai


    Khái niệm về Font chữ Việt


    Khi nói về font có 3 vấn đề cần phải chú ý:

    Bạn có thấy các fonts như Arial, Time News Roman, .vnTime, .vnArial,... không? Cái đó người ta gọi là font (nói nôm na thì font là thể hiện cái bề mặt của cái chữ mà bạn gõ vào, bạn chọn font khác nhau thì chữ của bạn sẽ thể hiện khác nhau trên chương trình (winword hay excel chẳng hạn). OK?

    Bảng mã


    Có khá nhiều bảng mã như UNICODE, VNI Windows, TCVN3 (ABC), v.v... Cái này hơi khó giải thích cho bạn hiểu. Nhưng thôi, bạn cứ hiểu là Unicode là bảng mã chuẩn quốc tế và ai trên thế giới này cũng đọc được mà ko cần gửi đúng font, còn "ABC" của bạn thì chính là TCVN3 mà "xưa kia" ở các tỉnh miền bắc này rất hay sử dụng và còn sử dụng lay lắt cho tới tận ngày nay).


    Mối quan hệ giữa Bảng mã và Fonts


    Thường thì các fonts được thiết kế dựa trên các bảng mã. Ví dụ .vnTime, .vn(***) thì được design theo TCVN3, Time News Roman, Arial, Tahoma, Veranda,... là những font chuẩn của windows (win98 trở lên) thì thiết kế là nhưng Unicode font. VNI.... thì tuy là 2 bytes nhưng là theo bảng mã VNI windows, v.v....

    Phần mềm gõ tiếng Việt


    PM gõ tiếng việt là CÔNG CỤ để bạn có thể gõ chữ theo laọi bảng mã mà bạn chọn. Hiện nay có rất nhiều Phần mềm gõ tiếng việt (ABC của Quách Tuấn Ngọc, VietKey của anh Tuấn - nhóm Vietkey, Vietware, Unikey, v.v...) và chỉ có ABC là chỉ hỗ trợ mỗi bảng mã TCVN3 thôi, còn lại hầu hết các PM khác đều hỗ trợ tất cả các bảng mã nói trên mà cụ thể là Vietkey và Unikey

    Như vậy, khi bạn cài Unikey (tôi khuyên bạn nên dùng cái này) và Vietkey thì bạn yên tâm là gõ được theo mọi bảng mã nhé (và ko bị lạc hậu).

    Nói dài dòng như vậy, không biết bạn có biết Unikey, Vietkey, ABC,... khác nhau như thế nào chưa?

    Để có được Unikey, bạn chỉ cần Google "Download Unikey" hoặc làm tương tự với tất cả các phần mềm khác.

    Unikey


    Sau khi cài đặt bạn làm như thế này:

    1. Copy vùng cần bỏ dấu (tô sáng vùng cần bỏ dấu rồi nhấn Ctrl + C)
    2. Bấm tổ hợp: Ctrl + Shift + F6.
    3. Chọn ô "Loại bỏ dấu".
    4. Chọn ô "Chuyển mã clipboard"
    5. Click vào nút "Chuyển mã"
    6. Quay lại Word hay Excel, nhấn Ctrl + V.

    VietPad


    Có một phần mềm nữa cũng cho phép bạn loại bỏ dấu cũng như điền dấu thêm vào, chẳng hạn:
    Kế toán quản trị -> Ke toan quan tri
    Ke toan quan tri -> Kế toán quẫn trí

    Đó là Vietpad bạn có thể download tại ĐÂY

  2. Có 3 thành viên cảm ơn handung107 về bài viết này:


  3. #2
    Tham gia ngày
    05 2006
    Nơi Cư Ngụ
    TP HCM
    Bài gởi
    1,462
    Cảm ơn
    1,172
    Được cảm ơn 16,176 lần trong 1,298 bài viết

    Code

    Bài của Hai2 Hai


    Đây là code cũ lâu lắm rồi, đoạn này chuyển từ chuỗi có dấu (mã TCVN3) sang chuỗi không dấu. (Bạn có thể sáng tạo, làm cho VNI, Unicode,... nhé)

    Trích nguyên văn:


    Public Function TCVN3ToVNWithoutMark(ByVal strTCVN3 As String) As String


    '* Name: TCVN3ToVNWithoutMark *

    '* Purpose: Convert string in TCVN3 format to vietnamese string without mark *

    '* Returns: Vietnamese string without mark *



    On Error GoTo TCVN3ToVNWithoutMark_Error
    Const strTCVN3Vowels = "¸µ¹¶·©ÊÇËÈÉ¢¨¾»Æ¼½¡®§ÐÌÑ ŽÏªÕÒÖÓÔ£ãßäáâ«èåéæ礬íêî à «ì¥óïñòô­øõùö÷¦Ý×ÞØÜýúþûü "
    Const strVNWithoutMarkVowels = "aaaaaaaaaaaAaaaaaaAdDeeeeeeeeeeeEoooooooooooo Oooo ooooOuuuuuuuuuuuUiiiiiyyyyy"

    Dim lngVowelPosition&, i&
    Dim strTemp As String

    strTemp = Trim$(strTCVN3)

    If Len(strTemp) = 0 Then
    GoTo TCVN3ToVNWithoutMark_Done
    End If

    '// Convert TCVN3 string to Vietnamese string without mark
    For i = 1 To Len(strTemp)
    lngVowelPosition = InStr(1, strTCVN3Vowels, mID$(strTemp, i, 1), vbBinaryCompare)
    If lngVowelPosition <> 0 Then
    strTemp = left$(strTemp, i - 1) & mID$(strVNWithoutMarkVowels, lngVowelPosition, 1) & mID$(strTemp, i + 1)
    End If
    Next

    '// Return vietnamese string without mark
    TCVN3ToVNWithoutMark = strTemp

    TCVN3ToVNWithoutMark_Done:
    Exit Function

    TCVN3ToVNWithoutMark_Error:
    Resume TCVN3ToVNWithoutMark_Done
    End Function
    Thực ra viết như thế này chưa phải là tối ưu vì cứ mỗi vòng for nó lại tính lại Len(strTemp) 1 lần làm cho vòng for chậm đi 1 chút
    For i = 1 To Len(strTemp)
    ...
    Next

    Đáng ra phải viết

    Dim l&

    l = Len(strTemp)

    For i = 1 To l
    ....
    Next

    mới "xịn"

  4. Thành viên sau cảm ơn handung107 về bài viết này:


Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]