I can barely read kanjis I already know in Youtube, for example, and I can’t distinguish ブ from プ already, is there a way to increase the size of kanjis, hiragana and katakana in Google Chrome?
I don’t want the restrain the amount of text I can read at the same time, however, japanese writing systems are something else and I can’t read them as it stands now
This may be occurring due to a 1920x1080 resolution (I don’t want to imagine in 4K)
In Windows you can set your computer to zoom everything. (I assume other operating systems can do this to, but I don’t know for sure.) When I moved up from a 720p to 1080p laptop, I set the zoom to 125%. On my 4k work laptop, the zoom is set to 200%.
Windows zoom screenshot
You can also set the default page zoom in Chrome if you prefer a solution that just impacts Chrome.
dunno about Chrome, but on Firefox you can zoom into any page with a keyboard shortcut or a touchpad gesture. i imagine that ought to work on Chrome too
early on when i’d just started learning japanese i had several pages/sites which i just kept permanently zoomed in.
it’s got the advantage that you don’t have to modify anything else
I can read almost everything clearly on wanikani although my eyesight is not as sharp as it used to be. I do sometimes have trouble distinguishing ぶ from ぷ as you say. In those cases a quick ctrl + will zoom in so I can make sure what I’m looking at, then I return to normal view with ctrl 0. Fast and easy.
All solutions I see are for ZOOMing everything. In theory, I think one could CSS styling with the Stylus addon to change the size of only the Japanese characters but I’m horrible with CSS and HTML so I cannot provide an actual implemention.
UPDATE: I look at my unused Tampermonkey userscripts and found one that works (Firefox, I have not tried with Chrome). I could not see the developer info or find in it in Tampermonkey but I’m sure is identical to the one in this repository, userscripts/enlargeJapanese.user.js at master · IllDepence/userscripts · GitHub
For me, it worked but it really messed the furigana since the script does not change the size proportionally. Here is the code sorry I cannot find who was the author. To test it, click Tampermonkey icon > Dashboard > + (plus sign to add an script) > copy and paste the code below.
// ==UserScript==
// @name enlargeJapanese
// @namespace enlargeJapanese
// @description enlarge Japanese text
// @include *
// ==/UserScript==
var minFontSize = 32;
var jPatt = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uffef\u4e00-\u9faf\u3400-\u4dbf]+/g;
/*
http://salaciak.blogspot.de/2011/02/javascript-dom-how-to-get-elements.html
*/
function elementCurrentStyle(element, styleName){
if (element.currentStyle){
var i = 0, temp = “”, changeCase = false;
for (i = 0; i < styleName.length; i++)
if (styleName[i] != ‘-’){
temp += (changeCase ? styleName[i].toUpperCase() : styleName[i]);
changeCase = false;
} else {
changeCase = true;
}
styleName = temp;
return element.currentStyle[styleName];
} else {
return getComputedStyle(element, null).getPropertyValue(styleName);
}
}
/*
sirtetris
*/
function getEnlarged(text) {
return text.replace(jPatt, ‘$&’);
}
function enlargeOnlyInnerMost(elem) {
if(elem.nodeName == “TEXTAREA”) return;
if(elem.hasChildNodes()) {
var cn = elem.childNodes;
for(var i=0; i<cn.length; i++) {
enlargeOnlyInnerMost(cn[i]);
}
}
else {
// at this point elem is a text node or an empty element
if(elem.textContent.length <= 1 && elem.nodeType == 1) {
// an empty element
if(elem.hasAttribute(‘value’)) {
if(elem.value.search(jPatt) > -1) {
elem.style.fontSize = minFontSize+‘px’;
}
}
return;
}
if(elem.nodeType == 3) {
// a text node
var paret = elem.parentNode;
if(elementCurrentStyle(paret, “font-size”).replace(“px”,“”) >= minFontSize) {
return;
}
if(paret.childNodes.length == 1) {
// a node with only text in it. it’s save to just insert < and >
paret.innerHTML = getEnlarged(paret.innerHTML);
}
else {
// node with tags in it. be sure to not insert < and > inside of them
var toDo = (elem.nodeValue.match(jPatt) || Array());
for(var i=0; i<toDo.length; i++) {
paret.innerHTML = paret.innerHTML.replace(toDo[i], ‘’+toDo[i]+‘’);
}
}
}
}
}