{"id":70,"date":"2014-10-27T21:43:25","date_gmt":"2014-10-27T20:43:25","guid":{"rendered":"http:\/\/www.pixnbgames.com\/blog\/?p=70"},"modified":"2015-08-21T23:53:13","modified_gmt":"2015-08-21T22:53:13","slug":"como-dibujar-caracteres-rusos-cirilicos-en-libgdx","status":"publish","type":"post","link":"https:\/\/www.pixnbgames.com\/blog\/libgdx\/como-dibujar-caracteres-rusos-cirilicos-en-libgdx\/","title":{"rendered":"C\u00f3mo dibujar caracteres rusos (cir\u00edlicos) en LibGDX"},"content":{"rendered":"<p style=\"text-align: justify;\">Cuando desarrollamos para dispositivos m\u00f3viles, hemos de tener en cuenta que probablemente nuestro programa ser\u00e1 usado en diferentes pa\u00edses por usuarios de varias\u00a0lenguas. Una herramienta para facilitar el uso de nuestro programa a dichos usuarios\u00a0es traducir nuestra aplicaci\u00f3n al idioma local de cada usuario. Este proceso es conocido como Internacionalizaci\u00f3n (I18N) y Localizaci\u00f3n (L10N). Para saber m\u00e1s sobre c\u00f3mo implementar esto en LibGDX, puedes consultar su <a title=\"LibGDX - Internacionalizaci\u00f3n y Localizaci\u00f3n\" href=\"https:\/\/github.com\/libgdx\/libgdx\/wiki\/Internationalization-and-Localization\" target=\"_blank\">Wiki oficial<\/a>.<\/p>\n<p style=\"text-align: justify;\">Por otro lado, una de las opciones que nos brinda\u00a0<a title=\"Sitio oficial LibGDX\" href=\"libgdx.badlogicgames.com\" target=\"_blank\">LibGDX<\/a>\u00a0es poder trabajar con fuente tipogr\u00e1ficas TrueType (.ttf) mediante la extensi\u00f3n <a title=\"LibGDX \/ Gdx-freetype\" href=\"https:\/\/github.com\/libgdx\/libgdx\/wiki\/Gdx-freetype\" target=\"_blank\">gdx-freetype<\/a>. Para saber m\u00e1s sobre c\u00f3mo usar este tipo de fuente, puedes consultar la\u00a0<a title=\"LibGDX FeeType\" href=\"https:\/\/github.com\/libgdx\/libgdx\/wiki\/Gdx-freetype\" target=\"_blank\">Wiki oficial de LibGDX<\/a>.<\/p>\n<p style=\"text-align: justify;\">Al combinar las dos herramientas anteriores (I18N \/ L10N y fuentes TTF), nos encontraremos con\u00a0que:<\/p>\n<ol>\n<li style=\"text-align: justify;\">Cada idioma utiliza un determinado alfabeto. Esto es, de forma resumida, el conjunto de letras o graf\u00edas que se utilizan para representar el lenguaje de forma escrita.<\/li>\n<li style=\"text-align: justify;\">Normalmente, una fuente tipogr\u00e1fica soporta s\u00f3lo un determinado conjunto de letras o graf\u00edas.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Como consecuencia de los dos puntos anteriores, es probable que debamos utilizar m\u00e1s de una fuente TTF para poder representar nuestro programa en determinados idiomas. A continuaci\u00f3n, mostraremos un caso de uso tomando como ejemplo\u00a0los idiomas Espa\u00f1ol y Ruso; aunque se puede trabajar con otros alfabetos de formas similar.<\/p>\n<h4 style=\"text-align: justify;\">Importante:<\/h4>\n<ol>\n<li style=\"text-align: justify;\">Esto no es un tutorial\u00a0sobre c\u00f3mo usar internacionalizaci\u00f3n o localizaci\u00f3n. Simplemente se muestra c\u00f3mo dibujar textos en LibGDX a partir de fuentes tipogr\u00e1ficas TrueTypeFont (.TTF).<\/li>\n<li style=\"text-align: justify;\"><strong><span style=\"text-decoration: underline;\">Gdx-freetype trabaja con textos en UTF-8<\/span><\/strong>, por lo tanto hemos de usar esta codificaci\u00f3n en los archivos de nuestro proyecto.<\/li>\n<li style=\"text-align: justify;\">Puede obtener el c\u00f3digo fuente desde\u00a0<a title=\"Obtener c\u00f3digo fuente\" href=\"https:\/\/github.com\/angelnavarro\/Gdx-Freetype-Example\" target=\"_blank\">GitHub<\/a>.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: justify;\">Creaci\u00f3n del proyecto (gdx-freetype)<\/h3>\n<p style=\"text-align: justify;\">Para empezar a trabajar el primer paso es la creaci\u00f3n del proyecto de LibGDX. Como sabemos que vamos a trabajar con fuentes TTF, marcamos la extensi\u00f3n\u00a0<em>gdx-freetype<\/em> para que Gradle importe las dependencias necesarias en nuestro proyecto.<\/p>\n<p style=\"text-align: justify;\">En nuestro caso llamaremos al proyecto <em>Gdx-Freetype-Example<\/em>. A tener en cuenta:<\/p>\n<ol>\n<li style=\"text-align: justify;\">En este proyecto no usaremos la librer\u00eda de f\u00edsicas Box2d. Por tanto desmarcamos esta opci\u00f3n.<\/li>\n<li style=\"text-align: justify;\">Habilitamos la extensi\u00f3n Freetype, en el apartado Extensions.<\/li>\n<li style=\"text-align: justify;\">Freetype no soporta el proyecto Html. Por lo tanto tambi\u00e9n es necesario desmarcar este proyecto.<\/li>\n<\/ol>\n<figure id=\"attachment_85\" aria-describedby=\"caption-attachment-85\" style=\"width: 258px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_project_generator.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-85\" src=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_project_generator-258x300.png\" alt=\"freetype_project_generator\" width=\"258\" height=\"300\" srcset=\"https:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_project_generator-258x300.png 258w, https:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_project_generator.png 620w\" sizes=\"(max-width: 258px) 100vw, 258px\" \/><\/a><figcaption id=\"caption-attachment-85\" class=\"wp-caption-text\">LibGDX Project Generator<\/figcaption><\/figure>\n<p>Los valores que hemos usado para este proyecto de ejemplo son:<\/p>\n<ul>\n<li><strong>Name:<\/strong> <code>Gdx-Freetype-Example<\/code><\/li>\n<li><strong>Package:<\/strong> <code>com.pixnbgames.gdx_freetype_example<\/code><\/li>\n<li><strong>Game class:<\/strong> <code>GdxGameFreetypeExampleGame<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Si lo hemos hecho bien, al importar el proyecto en nuestro IDE podremos ver como se importan las dependencias de <code>gdx-freetype<\/code>:<\/p>\n<figure id=\"attachment_87\" aria-describedby=\"caption-attachment-87\" style=\"width: 238px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_libs.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-87\" src=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_libs-238x300.png\" alt=\"gdx-freetype libs\" width=\"238\" height=\"300\" srcset=\"https:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_libs-238x300.png 238w, https:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_libs.png 359w\" sizes=\"(max-width: 238px) 100vw, 238px\" \/><\/a><figcaption id=\"caption-attachment-87\" class=\"wp-caption-text\">gdx-freetype libs<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: justify;\">Seleccionando fuentes tipogr\u00e1ficas<\/h3>\n<p style=\"text-align: justify;\">Hemos dicho que trabajaremos con los idiomas Espa\u00f1ol y Ruso. Para este\u00a0ejemplo, simplemente vamos a imprimir en pantalla un mensaje de bienvenida:<\/p>\n<ul>\n<li style=\"text-align: justify;\"><strong>Espa\u00f1ol:<\/strong> \u00a1Hola Mundo!<\/li>\n<li style=\"text-align: justify;\"><strong>Ruso:<\/strong>\u00a0\u041f\u0440\u0438\u0432\u0435\u0442 \u043c\u0438\u0440!<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Si observamos el mensaje traducido al ruso puede parecernos un tanto extra\u00f1o. Esto se debe a que mientras que el Espa\u00f1ol utiliza el <a title=\"Alfabeto Latino\" href=\"http:\/\/es.wikipedia.org\/wiki\/Alfabeto_latino\" target=\"_blank\">alfabeto latino<\/a>, el Ruso utiliza una variante del <a title=\"Alfabeto Ruso\" href=\"http:\/\/es.wikipedia.org\/wiki\/Alfabeto_ruso\" target=\"_blank\">alfabeto cir\u00edlico<\/a>.<\/p>\n<p style=\"text-align: justify;\">Normalmente, una fuente tipogr\u00e1fica no soportar\u00e1 todos los alfabetos existentes, por lo que nos veremos obligados a seleccionar varias fuentes dependiendo del idioma que queramos representar. Para nuestro caso, usaremos las siguientes fuentes:<\/p>\n<ul>\n<li><strong>Espa\u00f1ol:<\/strong> <a title=\"Goodfish Font Family\" href=\"http:\/\/www.1001fonts.com\/goodfish-font.html\" target=\"_blank\">Goodfish Font Family<\/a><\/li>\n<li><strong>Ruso:<\/strong>\u00a0<a title=\"Imperial One\" href=\"http:\/\/www.dafont.com\/imperial-one.font\" target=\"_blank\">Imperial One<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>A\u00f1adir las fuentes a nuestro proyecto de LibGDX<\/h3>\n<p style=\"text-align: justify;\">Cuando descarguemos estas fuentes tipogr\u00e1ficas, podemos tener m\u00e1s de un archivo TTF en cada una de ellas.\u00a0Cada uno de estos archivos se corresponder\u00e1 con un estilo de la fuente (negrita, cursiva, &#8230;). Para este ejemplo s\u00f3lo tomaremos un archivo de cada fuente (\u00ab<em>goodfish rg.ttf<\/em>\u00bb para <em>Goodish<\/em> y \u00ab<em>Imperial Web.ttf<\/em>\u00bb para <em>Imperial One<\/em>).<\/p>\n<p style=\"text-align: justify;\">Los archivos TTF son un recurso m\u00e1s de nuestro proyecto y por tanto los agregamos a la carpeta \u00ab<em>assets\/<\/em>\u00bb del proyecto android. Para una mejor organizaci\u00f3n de los recursos, podemos crear una carpeta espec\u00edfica, por ejemplo con el nombre \u00ab<em>fonts\/<\/em>\u00ab, dentro del directorio \u00ab<em>assets\/<\/em>\u00bb e incluir ah\u00ed nuestras fuentes tipogr\u00e1ficas:<\/p>\n<figure id=\"attachment_90\" aria-describedby=\"caption-attachment-90\" style=\"width: 220px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_assets_fonts.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-90\" src=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_assets_fonts.png\" alt=\"android\/assets\/font\" width=\"220\" height=\"206\" \/><\/a><figcaption id=\"caption-attachment-90\" class=\"wp-caption-text\">android\/assets\/font<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h3>\u00a0Generar fuentes TTF para LibGDX<\/h3>\n<p style=\"text-align: justify;\">Para poder renderizar texto con nuestras fuentes TTF, necesitamos primero generar\u00a0fuentes <a href=\"https:\/\/github.com\/libgdx\/libgdx\/wiki\/Bitmap-fonts\" target=\"_blank\">Bitmap<\/a>. Para centralizar la generaci\u00f3n de fuentes, nos crearemos una clase FontFactory, en la que tendremos el c\u00f3digo necesario para generar la fuente en funci\u00f3n del Locale del usuario.\u00a0El c\u00f3digo de la clase FontFactory es\u00a0demasiado largo para pegarlo aqu\u00ed entero, as\u00ed que lo iremos viendo por partes.<\/p>\n<p style=\"text-align: justify;\">En primer lugar, tenemos dos variables est\u00e1ticas de tipo String con los nombres de los archivos TTF:<\/p>\n<pre lang=\"Java\" line=\"13\">public static final String SPANISH_FONT_NAME = \"fonts\/goodfish rg.ttf\";\r\npublic static final String RUSSIAN_FONT_NAME = \"fonts\/Imperial Web.ttf\";\r\n<\/pre>\n<p style=\"text-align: justify;\">Despu\u00e9s, tendremos una variable que contendr\u00e1 los caracteres rusos. \u00bfPor qu\u00e9? Por defecto, LibGDX generar\u00e1 los caracteres contenidos en la cadena <code>FreeTypeFontGenerator.DEFAULT_CHARS<\/code>. Dado que este <code>String<\/code> s\u00f3lo contiene los caracteres latinos, si queremos generar otro tipo de caracteres hemos de decir expl\u00edcitamente cuales son. En este ejemplo, usaremos la siguiente cadena con el alfabeto ruso:<\/p>\n<pre lang=\"Java\" line=\"17\">public static final String RUSSIAN_CHARACTERS = \"\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f\"\r\n                                              + \"\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f\"\r\n                                              + \"1234567890.,:;_\u00a1!\u00bf?\\\"'+-*\/()[]={}\";\r\n<\/pre>\n<p>Las fuentes generadas se almacenan en dos variables locales:<\/p>\n<pre lang=\"Java\" line=\"24\">private BitmapFont esFont;\r\nprivate BitmapFont ruFont;\r\n<\/pre>\n<p>El siguiente m\u00e9todo se encarga de generar la fuentes <code>Bitmap<\/code>:<\/p>\n<pre lang=\"Java\" line=\"54\">private BitmapFont generateFont(String fontName, String characters) {\r\n\t\r\n    \/\/ Configure font parameters\r\n    FreeTypeFontParameter parameter = new FreeTypeFontParameter();\r\n    parameter.characters = characters;\r\n    parameter.size = 24;\r\n\r\n    \/\/ Generate font\r\n    FreeTypeFontGenerator generator = new FreeTypeFontGenerator( Gdx.files.internal(fontName) );\r\n    BitmapFont font = generator.generateFont(parameter);\r\n\r\n    \/\/ Dispose resources\r\n    generator.dispose();\r\n\r\n    return font;\r\n}\r\n<\/pre>\n<p>y ser\u00e1 llamado desde el m\u00e9todo <code>initialize()<\/code> tal que as\u00ed:<\/p>\n<pre lang=\"Java\" line=\"37\">public void initialize() {\r\n    \/\/ If fonts are already generated, dispose it!\r\n    if (esFont != null) esFont.dispose();\r\n    if (ruFont != null) ruFont.dispose();\r\n    \r\n    esFont = generateFont(SPANISH_FONT_NAME, FreeTypeFontGenerator.DEFAULT_CHARS);\r\n    ruFont = generateFont(RUSSIAN_FONT_NAME, RUSSIAN_CHARACTERS);\r\n}\r\n<\/pre>\n<p>Por \u00faltimo, usaremos el m\u00e9todo <code>getFont()<\/code> para obtener la fuente en funci\u00f3n del lenguaje usado por el <code>Locale<\/code> recibido por par\u00e1metro:<\/p>\n<pre lang=\"Java\" line=\"77\">public BitmapFont getFont(Locale locale) {\r\n    if      (\"es\".equals(locale.getLanguage())) return esFont;\r\n    else if (\"ru\".equals(locale.getLanguage())) return ruFont;\r\n    else throw new IllegalArgumentException(\"Not supported language\");\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3>Dibujar\u00a0textos en pantalla<\/h3>\n<p style=\"text-align: justify;\">\u00a0En nuestra clase principal,\u00a0<code>GdxGameFreetypeExampleGame<\/code>, dibujaremos el mensaje \u00ab\u00a1Hola Mundo!\u00bb en espa\u00f1ol y ruso. Para ello declaramos los mensajes en dos variables est\u00e1ticas:<\/p>\n<pre lang=\"Java\" line=\"14\">public static final String SPANISH_MESSAGE = \"\u00a1Hola Mundo!\";\r\npublic static final String RUSSIAN_MESSAGE = \"\u041f\u0440\u0438\u0432\u0435\u0442 \u043c\u0438\u0440!\";\r\n<\/pre>\n<p style=\"text-align: justify;\">Adem\u00e1s tendremos dos variables donde almacenaremos los <code>Locale <\/code>espa\u00f1ol y ruso:<\/p>\n<pre lang=\"Java\" line=\"21\">private Locale esLocale;\r\nprivate Locale ruLocale;\r\n<\/pre>\n<p style=\"text-align: justify;\">En el m\u00e9todo <code>create()<\/code>, inicializamos nuestra factor\u00eda de fuentes y los Locale de Espa\u00f1a y Rusia:<\/p>\n<pre lang=\"Java\" line=\"25\">public void create () {\r\n    batch = new SpriteBatch();\r\n    \r\n    \/\/ Initialize FontFactory\r\n    FontFactory.getInstance().initialize();\r\n    \r\n    \/\/ Initialize locales\r\n    esLocale = new Locale(\"es\", \"ES\");\r\n    ruLocale = new Locale(\"ru\", \"RU\");\r\n}\r\n<\/pre>\n<p style=\"text-align: justify;\">S\u00f3lo nos queda dibujar desde el m\u00e9todo <code>render()<\/code>:<\/p>\n<pre lang=\"Java\" line=\"37\">public void render () {\r\n    \/\/ Clear screen\r\n    Gdx.gl.glClearColor(0, 0, 1, 1);\r\n    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);\r\n    \r\n    \/\/ Draw with fonts\r\n    batch.begin();\r\n    FontFactory.getInstance().getFont(esLocale).draw(batch, SPANISH_MESSAGE, 110.f, 150.f);\r\n    FontFactory.getInstance().getFont(ruLocale).draw(batch, RUSSIAN_MESSAGE, 70.f, 100.f);\r\n    batch.end();\r\n}\r\n<\/pre>\n<h3 style=\"text-align: justify;\">Resultado<\/h3>\n<p style=\"text-align: justify;\">El resultado de ejecutar el c\u00f3digo anterior ser\u00e1 algo as\u00ed:<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_example.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium wp-image-129\" src=\"http:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_example-300x253.png\" alt=\"freetype_example\" width=\"300\" height=\"253\" srcset=\"https:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_example-300x253.png 300w, https:\/\/www.pixnbgames.com\/blog\/wp-content\/uploads\/2014\/10\/freetype_example.png 358w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Como se puede ver, el mensaje se muestra correctamente en los dos idiomas; cada uno utilizando la fuente que hemos definido.<\/p>\n<h2 style=\"text-align: justify;\">Mejoras:<\/h2>\n<p style=\"text-align: justify;\">Las siguientes posibles mejoras no se han tratado para no hacer el tutorial aun m\u00e1s extenso \ud83d\ude42<\/p>\n<ul>\n<li style=\"text-align: justify;\">Aunque en este ejemplo mostramos la cadena en idiomas distintos, lo normal si tenemos una aplicaci\u00f3n localizada es cargar s\u00f3lo el idioma actual del usuario, con lo cual s\u00f3lo ser\u00eda necesario generar una fuente cada vez.<\/li>\n<li style=\"text-align: justify;\">Hay fuentes tipogr\u00e1ficas preparadas para soportar m\u00faltiples alfabetos. Utilizando alguna de estas fuentes nos ahorraremos el tener que buscar una distinta para cada idioma soportado. Adem\u00e1s, tener s\u00f3lo un archivo .TTF tambi\u00e9n har\u00e1 que nuestras aplicaciones ocupen menos espacio. Algo muy apreciado en dispositivos m\u00f3viles.<\/li>\n<\/ul>\n<h2 style=\"text-align: justify;\">C\u00f3digo fuente<\/h2>\n<p style=\"text-align: justify;\">Pod\u00e9is encontrar todo el c\u00f3digo fuente utilizado en <a title=\"Obtener c\u00f3digo fuente\" href=\"https:\/\/github.com\/angelnavarro\/Gdx-Freetype-Example\" target=\"_blank\">GitHub<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando desarrollamos para dispositivos m\u00f3viles, hemos de tener en cuenta que probablemente nuestro programa ser\u00e1 usado en diferentes pa\u00edses por usuarios de varias\u00a0lenguas. Una herramienta para facilitar el uso de nuestro programa a dichos usuarios\u00a0es traducir nuestra aplicaci\u00f3n al idioma <a class=\"more-link\" href=\"https:\/\/www.pixnbgames.com\/blog\/libgdx\/como-dibujar-caracteres-rusos-cirilicos-en-libgdx\/\">Seguir leyendo <span class=\"screen-reader-text\">  C\u00f3mo dibujar caracteres rusos (cir\u00edlicos) en LibGDX<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":129,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[14],"tags":[16,17,15],"language":[5],"_links":{"self":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/70"}],"collection":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/comments?post=70"}],"version-history":[{"count":57,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/70\/revisions"}],"predecessor-version":[{"id":136,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/posts\/70\/revisions\/136"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/media\/129"}],"wp:attachment":[{"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/media?parent=70"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/categories?post=70"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/tags?post=70"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.pixnbgames.com\/blog\/wp-json\/wp\/v2\/language?post=70"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}