한글 파워포인트에서 일본어를 입력했을 때 

다른 일본어 폰트로 변경이 안되는 사례가 발견되었습니다.

일단 내부적인 원인 파악을 위해서

현재 선택된 텍스트에 적용된 여러가지 폰트와 LanguageID를 알아보려면

아래와 같은 코드를 이용할 수 있습니다.

Sub test()

    Dim shp As Shape
    Dim tr As TextRange
    
    Set shp = ActiveWindow.Selection.ShapeRange(1)
    
    'Set tr = shp.TextFrame.TextRange.Characters(2)
    Set tr = ActiveWindow.Selection.TextRange.Characters(1)
    
    Debug.Print "Text: ["; tr.Text; "]"
    Debug.Print "Name: "; tr.Font.Name
    Debug.Print "NameAscii: "; tr.Font.NameAscii
    Debug.Print "NameComplexScript: "; tr.Font.NameComplexScript
    Debug.Print "NameFarEast: "; tr.Font.NameFarEast
    Debug.Print "NameOther: "; tr.Font.NameOther
    Debug.Print "LangID: "; tr.LanguageID '1041:Jap, 1042:Kor, 1033:Eng
    
End Sub

 

위 코드를 이용해서 테스트한 결과는 아래와 같습니다.

주황색 화살표의 글자는 기존에 한글 텍스트를 지우고 일본어를 직접 입력하였거나

Ctrl-Alt-V 선택하여 붙여넣기> 일반 텍스트로 붙여넣을 경우

해당 텍스트의 LangeuageID가 원래대로 한글(1042)로 유지가 됩니다.

 

그러면 한글문자코드로 여겨져서

일본어 폰트로는 변경이 되지 않습니다.

오히려 일본어를 지원하는 다른 한글 폰트로는 변경이 됩니다.

(이 경우에도 일본어, 한국어를 모두 지원하는 구글 Noto Sans 같은 글로벌(?) 다국적 폰트로는 변경이 가능합니다.)

 

이 경우 파란색 화살표 글자처럼 일본어 텍스트를 Ctrl-V로 붙여넣거나

파일> 옵션> 언어에서 오피스 편집언어를 일본어를 기본으로 바꾼 다음에 편집을 해야겠습니다.

아니면 아래와 같은 VBA코드로 LanguageID를 강제로 일본어로 바꿔줄 수 있습니다.

Sub ChangeLangID()
    
    With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange
        .LanguageID = msoLanguageIDJapanese
        'Debug.Print .LanguageID '1041:Jap, 1042:Kor, 1033:Eng
    End With
    
End Sub

일본어 텍스트상자를 모두 선택하고 위 매크로를 실행하면 일본어(1041)로 LanguageID를 바꿔줍니다.

이제 다른 일본어 폰트로 바꿀 수 있습니다.

 

(반대로 한글 텍스트상자를 일본어ID로 바꾸어 버리면 한글폰트가 적용이 잘 안되게 됨을 유의하세요.)

 

아래 테스트 파일 참고하세요.

 

FontLanguageID1.pptm
0.08MB