태그

2016년 4월 23일 토요일

Processing에서 화면에 한글 출력하기


processing 3.0.2 버전을 기준으로 작성하였습니다.
학습 목적으로 작성된 문서이므로 자세하지 못하거나 틀린 부분이 있을 수도 있다는 점을 알려드립니다.

설명에 앞서 파일(file)-환경설정(preferences)에 들어가서

언어(language): 한국어
에디터 및 콘솔 폰트(editor and console font): 돋움체

를 선택해주세요.
시스템 메뉴와 코드가 한국어로 보이게 하기 위한 설정입니다.



PFont myFont;
void setup() {
  size(400, 200);
  // Uncomment the following two lines to see the available fonts
  String[] fontList = PFont.list();
  printArray(fontList); 
  myFont = createFont("한초롬바탕", 32);
  textFont(myFont);
  textAlign(CENTER, CENTER);
  text(" 가나다라마바사아", width/2, height/2);
}

일단 위 코드를 복사해서 프로세싱의 스케치에 붙여넣어 실행해보세요.




그러면 콘솔창에
c: windows\fonts 에 설치된 폰트목록이 쭉 보입니다.

여러분이 복사 붙여넣기 한 코드에는 이 중 '함초롱바탕' 이라는 글꼴로 화면에 출력하기 위해서

myFont = createFont("한초롬바탕", 32);

라고 적은 것을 확인 할 수 있습니다.

만약, 다른 글꼴로 글자가 화면에 출력되게 하고 싶다면 콘솔창에 뜬 글꼴 중에 원하는 것을 골라서 다른 것을 적으시면 되고
글꼴을 직접 확인해보고 싶다면 c: windows\fonts 경로로 찾아가서 확인하면 됩니다.

코드를 실행해보면 다음과 같은 결과물을 얻을 수 있습니다.







간단한 설명은 위와 같고 코드를 아주 조금만 자세히 설명해보겠습니다.

PFont myFont; 

폰트를 저장하기 위한 변수입니다.

void setup() { } 

프로그램이 시작될 때 단 한번만 실행되는 함수입니다.
주로 화면 크기, 폰트 크기, 프레임 등과 같은 코드들이 여기에 적힙니다


size(400, 200);

화면의 크기를 지정합니다.
순서대로 가로, 세로 화면크기 수치를 의미합니다.
  // Uncomment the following two lines to see the available fonts
  String[] fontList = PFont.list();
  printArray(fontList); 
c:windows\fonts 에 설치된 폰트 목록을 불러와서 콘솔창에 출력하기 위한 코드입니다.

  myFont = createFont("한초롬바탕", 32);
PFont 자료형 myFont라는 이름의 변수에
createFont 메서드를 이용하여 새로운 글꼴과 그 크기를 저장합니다.
이 코드의 결과로 myFont 변수에 글꼴은 함초롱바탕 크기는 32 라는 값이 저장됩니다.

  textFont(myFont);
다음 코드부터 출력되는 문자는
myFont에 저장된 값 설정대로 출력됩니다.

  textAlign(CENTER, CENTER);
다음 코드부터 출력되는 문자는 x, y 모두 가운대로 정렬되어 출력됩니다.

  text(" 가나다라마바사아", width/2, height/2);
문자열 "가나다라마바사아" 를

x축 width/2 지점(가로 중앙)
y축 height/2 지점(세로 중앙)

에 출력합니다.


참조한 원문은 아래에서 확인할 수 있습니다.

https://processing.org/reference/createFont_.html




댓글 4개:

  1. 저기....그게 될 리가 없죠..
    함초롬바탕을 한초롬바탕으로 썼으니..
    그게 나온 이유는 createFont()에서 fontSize()를 지정해주었으니 되는거죠 직접 fontSize(32) 해보시면 안될껄요..ㅋㅋ
    애초에 한초롬바탕이란 글꼴이 없으니 기본 글꼴로 나오는거구용

    답글삭제
    답글
    1. 아 뭐래니 fontSize()가 아니고 textSize()입니당

      삭제
    2. 실제로

      //PFont myFont;
      void setup() {
      size(250, 250);
      //myFont=createFont("함초롬바탕", 32);
      //textFont(myFont);
      //textSize(32);
      }
      void draw() {
      text("한글", 100, 100);
      }

      하시면 작은 글꼴로 한글이 출력되는 것을 확인하실 수 있는데

      //PFont myFont;
      void setup() {
      size(250, 250);
      //myFont=createFont("함초롬바탕", 32);
      //textFont(myFont);
      textSize(32);
      }
      void draw() {
      text("한글", 100, 100);
      }

      이렇게 textSize()를 해보시면 안되는걸 보실 수 있습니다

      그런데

      PFont myFont;
      void setup() {
      size(250, 250);
      myFont=createFont("", 32);
      textFont(myFont);
      //textSize(32);
      }
      void draw() {
      text("한글", 100, 100);
      }

      이렇게 해보시면 createFont()에서 설정한 사이즈로 값이 설정되어 제대로 한글이 출력되는 것을 보실 수 있습니다

      그렇기 때문에 작성자님이 올리신 글에서 제대로 작동되는 이유는 PFont(), createFont()를 이용해서 사이즈값을 설정하신 것 때문이지, 설정한 글꼴 때문에 한글 출력이 된 것은 아닙니다.

      삭제
    3. 아고고... 복사할 때 들여쓰기가 안됐네

      삭제