¿Qué letra del alfabeto inglés ocupa la mayoría de los píxeles?
181
Estoy tratando de hacer una programación dinámica basada en el número de caracteres en una oración. ¿Qué letra del alfabeto inglés ocupa la mayor cantidad de píxeles en la pantalla?
la mayoría de los píxeles sobre todos? Más ancho? Más alto? Cual fuente? Se puede especificar?
Gregor Brandt
66
¿Eso no depende de la fuente utilizada?
Roberto Aloi
Cual fuente? Minúscula, superior?
Rocket Ronnie
66
Realmente depende de la fuente, ya que está solicitando la que "ocupa la mayor cantidad de píxeles".
Gurzo
66
La sabiduría tipográfica tradicional es M o W para mayúsculas ym para minúsculas. Depende de la fuente, pero esto funciona aceptablemente en la mayoría de los casos.
Por supuesto, este es un experimento empírico tonto. No hay una respuesta única a qué letra es más ancha. Depende de la fuente. Entonces tendrá que hacer un experimento empírico similar para encontrar la respuesta para su entorno. Pero el hecho es que la mayoría de las fuentes siguen las mismas convenciones, y la W mayúscula será la más amplia.
Gist con estos anchos de caracteres en forma de relación (W = 100) capturado aquí usando esta fuente de ejemplo particular:
Curiosamente, en 'Arial Black' en mi MacBook en Chrome, m minúscula es la más ancha, por un pequeño margen.
Earl Jenkins
15
¿Qué tal esto ........................................ WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%% .......................... ......................................... así que creo que el @ gana !!
John Henckel
19
Así que W es, en realidad , no un revés M. me he equivocado todos estos años!
Ulises Alves
3
¡Vota simplemente por la genialidad de esta respuesta!
Tanckom
122
Además de la respuesta increíblemente práctica de Ned Batchelder, porque vine aquí preguntándome acerca de los dígitos:
Dudaba esta información, pensando que un '1' seguramente sería más estrecho que otros dígitos. Pero en las fuentes que he verificado, todos los dígitos tienen el mismo ancho. Supongo que es una elección de diseño de fuente.
jfritz42
66
Al menos para mí (viendo esta publicación en Firefox en Ubuntu), 1 es más estrecho que otros, y otros son todos del mismo ancho.
MestreLion
@MestreLion: ¿Qué fuente estás usando? Cara, tamaño y cualquier modificador, como negrita o cursiva.
Earl Jenkins
2
@LukeTaylor - ¡Por qué es así! font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;font-size: 15px; Oh, esa Apple, siempre tratando de ser un poco diferente ...
Earl Jenkins
1
Esto realmente depende de font-variant-numeric: los números proporcionales permiten diferentes anchos, tanto en el glifo como en el espaciado, mientras que los números tabulares deben seguir reglas similares a las fuentes monoespaciadas.
Matthew Willcockson el
21
¿Qué tal una solución programática?
var capsIndex =65;var smallIndex =97var div = document.createElement('div');
div.style.float='left';
document.body.appendChild(div);var highestWidth =0;var elem;for(var i = capsIndex; i < capsIndex +26; i++){
div.innerText =String.fromCharCode(i);var computedWidth = window.getComputedStyle(div,null).getPropertyValue("width");if(highestWidth < parseFloat(computedWidth)){
highestWidth = parseFloat(computedWidth);
elem =String.fromCharCode(i);}}for(var i = smallIndex; i < smallIndex +26; i++){
div.innerText =String.fromCharCode(i);var computedWidth = window.getComputedStyle(div,null).getPropertyValue("width");if(highestWidth < parseFloat(computedWidth)){
highestWidth = parseFloat(computedWidth);
elem =String.fromCharCode(i);}}
div.innerHTML ='<b>'+ elem +'</b>'+' won';
Tanto "M" como "W" tienen el mismo número de píxeles. Como la mayoría de las respuestas dicen "W", es mejor mostrar que M y W son iguales y ganaron. Por cierto muy buena respuesta.
Talespin_Kit
14
La "M" mayúscula es convencionalmente la más amplia.
Dependiendo de su plataforma, puede haber una forma de "getWidth" de una cadena o función DrawText () de alguna manera con una propiedad de ancho.
Haría un algoritmo simple que utilizara la fuente necesaria y luego corriera a través del alfabet y lo almacenara en una configuración pequeña o simplemente lo calculara en la inicialización como un ciclo de A a Z no es tan difícil.
También depende de la fuente. Lo hice hace 1 o 2 años con Processing y Helvetica y es ILJTYFVCPAXUZKHSEDORGNBQMW en orden de píxeles en aumento. La idea es dibujar el texto en un lienzo con la fuente que está mirando, contar los píxeles y luego ordenarlos con un HashMap o un Diccionario.
Por supuesto, esto podría no estar directamente relacionado con su uso, ya que calcula el área de píxeles en lugar del ancho. Podría ser un poco exagerado también.
Alex Michael publicó en su blog una solución para calcular el ancho de las fuentes un poco como la solución publicada por xxx en su blog (que curiosamente me vinculó aquí).
Resumen:
Para Helvetica, las tres primeras letras son: M (2493 píxeles), W (2414) y B (1909).
Para un conjunto de fuentes que se entregó con su Mac, los resultados son más o menos los mismos: M (2217.51 ± 945.19), W (2139.06 ± 945.29) y B (1841.38 ± 685.26).
Dependerá de la fuente. Crearía un pequeño programa en un lenguaje de programación con el que se sienta más cómodo, donde dibuje cada letra del alfabeto en un mapa de bits de tamaño m. Inicialice cada píxel con blanco. Luego cuente el número de píxeles blancos después de haber dibujado cada letra y guarde ese número. El número más alto que encuentre es el que está buscando.
EDITAR: si de hecho solo está interesado en cuál ocupa el rectángulo más grande (pero parece que realmente está después de eso, no los píxeles), puede usar varias llamadas API para encontrar el tamaño, pero eso depende de tu lenguaje de programación En Java, por ejemplo, usaría la clase FontMetrics.
Sé que la respuesta aceptada aquí es W, W es para WIN.
Sin embargo, en este caso, W también es para Ancho. El estudio de caso utilizado empleó una prueba de ancho simple para examinar los píxeles, pero fue solo el ancho, no el recuento total de píxeles. Como ejemplo de contador fácil, la respuesta aceptada supone que O y Q ocupan la misma cantidad de píxeles, pero solo ocupan la misma cantidad de espacio.
Por lo tanto, W ocupa la mayor parte del espacio . Pero, ¿son todos los píxeles que parece ser?
Obtengamos algunos datos empíricos. Creé imágenes imgur de los siguientes B, M y W. Luego analicé su recuento de píxeles (ver más abajo), aquí están los resultados:
B: 114 píxeles
M: 150 píxeles
W: 157 píxeles
Así es como los introduje en el lienzo y analicé los datos de píxeles sin procesar de las imágenes.
var imgs ={
B :"//i.imgur.com/YOuEPOn.png",
M :"//i.imgur.com/Aev3ZKQ.png",
W :"//i.imgur.com/xSUwE7w.png"};
window.onload =function(){for(var key in imgs){(function(img,key){varOut= document.querySelector("#"+key+"Out");
img.crossOrigin ="Anonymous";
img.src=imgs[key];
img.onload =function(){var canvas = document.querySelector('#'+key);(canvas.width = img.width,canvas.height = img.height);var context = canvas.getContext('2d');
context.drawImage(img,0,0);var data = context.getImageData(0,0, img.width, img.height).data;Out.innerHTML ="Total Pixels: "+ data.length/4+"<br>";var pixelObject ={};for(var i =0; i < data.length; i +=4){var rgba ="rgba("+data[i]+","+data[i+1]+","+data[i+2]+","+data[i+3]+")";
pixelObject[rgba]= pixelObject[rgba]? pixelObject[rgba]+1:1;}Out.innerHTML +="Total Whitespace: "+ pixelObject["rgba(255,255,255,255)"]+"<br>";Out.innerHTML +="Total Pixels In "+ key +": "+((data.length/4)-pixelObject["rgba(255,255,255,255)"])+"<br>";};})(newImage(),key)}};
¿Quieres saber el glifo más largo real , no solo adivinar?
Y no solo estoy hablando de letras, dígitos y símbolos comunes (!, @, Etc.). Me refiero al glifo más largo de todos los 32.834 caracteres de UTF-16.
Así que comencé con la respuesta de @NK que tenía una solución programática e hice algunas modificaciones leves :
var capsIndex =65;var smallIndex =97;var div = document.createElement('div');
div.style.float='left';
document.body.appendChild(div);var highestWidth =0;var elem;for(var i = capsIndex; i <32834; i++){
div.innerText =String.fromCharCode(i);var computedWidth = window.getComputedStyle(div,null).getPropertyValue("width");if(highestWidth < parseFloat(computedWidth)){
highestWidth = parseFloat(computedWidth);
elem =String.fromCharCode(i);}}
div.innerHTML ='<b>'+ elem +'</b>'+' won';
Después de ejecutar esto y esperar (y esperar), da la salida ௌ won.
Y ahí lo tienes, ¡el personaje más largo de UTF-32! Tenga en cuenta que en algunas fuentes el glifo más largo es ﷽, pero las otras fuentes (especialmente las monoespaciales) se superponen a los caracteres, al igual que con la fuente que el programa tiene en cuenta.
Respuestas:
Hmm, veamos:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccccccccccccc
dddddddddddddddddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
ffffffffffffffffffffffffffffffffffffffff
gggggggggggggggggggggggggggggggggggggggg
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
llllllllllllllllllllllllllllllllllllllll
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
oooooooooooooooooooooooooooooooooooooooo
pppppppppppppppppppppppppppppppppppppppp
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
ssssssssssssssssssssssssssssssssssssssss
tttttttttttttttttttttttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
W gana.
Por supuesto, este es un experimento empírico tonto. No hay una respuesta única a qué letra es más ancha. Depende de la fuente. Entonces tendrá que hacer un experimento empírico similar para encontrar la respuesta para su entorno. Pero el hecho es que la mayoría de las fuentes siguen las mismas convenciones, y la W mayúscula será la más amplia.
Gist con estos anchos de caracteres en forma de relación (W = 100) capturado aquí usando esta fuente de ejemplo particular:
https://gist.github.com/imaurer/d330e68e70180c985b380f25e195b90c
fuente
Además de la respuesta increíblemente práctica de Ned Batchelder, porque vine aquí preguntándome acerca de los dígitos:
0000000000000000000000000000000000000000
1111111111111111111111111111111111111111
2222222222222222222222222222222222222222
3333333333333333333333333333333333333333
4444444444444444444444444444444444444444
5555555555555555555555555555555555555555
6666666666666666666666666666666666666666
7777777777777777777777777777777777777777
8888888888888888888888888888888888888888
9999999999999999999999999999999999999999
fuente
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
font-size: 15px;
Oh, esa Apple, siempre tratando de ser un poco diferente ...font-variant-numeric
: los números proporcionales permiten diferentes anchos, tanto en el glifo como en el espaciado, mientras que los números tabulares deben seguir reglas similares a las fuentes monoespaciadas.¿Qué tal una solución programática?
fuente
La "M" mayúscula es convencionalmente la más amplia.
fuente
Creo que la carta
W
es la más amplia.fuente
Dependiendo de su plataforma, puede haber una forma de "getWidth" de una cadena o función DrawText () de alguna manera con una propiedad de ancho.
Haría un algoritmo simple que utilizara la fuente necesaria y luego corriera a través del alfabet y lo almacenara en una configuración pequeña o simplemente lo calculara en la inicialización como un ciclo de A a Z no es tan difícil.
fuente
También depende de la fuente. Lo hice hace 1 o 2 años con Processing y Helvetica y es ILJTYFVCPAXUZKHSEDORGNBQMW en orden de píxeles en aumento. La idea es dibujar el texto en un lienzo con la fuente que está mirando, contar los píxeles y luego ordenarlos con un HashMap o un Diccionario.
Por supuesto, esto podría no estar directamente relacionado con su uso, ya que calcula el área de píxeles en lugar del ancho. Podría ser un poco exagerado también.
fuente
Arial 30px en Chrome - W gana .
fuente
Alex Michael publicó en su blog una solución para calcular el ancho de las fuentes un poco como la solución publicada por xxx en su blog (que curiosamente me vinculó aquí).
Resumen:
Publicación original: http://alexmic.net/letter-pixel-count/
Código:
fuente
Dependerá de la fuente. Crearía un pequeño programa en un lenguaje de programación con el que se sienta más cómodo, donde dibuje cada letra del alfabeto en un mapa de bits de tamaño m. Inicialice cada píxel con blanco. Luego cuente el número de píxeles blancos después de haber dibujado cada letra y guarde ese número. El número más alto que encuentre es el que está buscando.
EDITAR: si de hecho solo está interesado en cuál ocupa el rectángulo más grande (pero parece que realmente está después de eso, no los píxeles), puede usar varias llamadas API para encontrar el tamaño, pero eso depende de tu lenguaje de programación En Java, por ejemplo, usaría la clase FontMetrics.
fuente
Sé que la respuesta aceptada aquí es W, W es para WIN.
Sin embargo, en este caso, W también es para Ancho. El estudio de caso utilizado empleó una prueba de ancho simple para examinar los píxeles, pero fue solo el ancho, no el recuento total de píxeles. Como ejemplo de contador fácil, la respuesta aceptada supone que O y Q ocupan la misma cantidad de píxeles, pero solo ocupan la misma cantidad de espacio.
Por lo tanto, W ocupa la mayor parte del espacio . Pero, ¿son todos los píxeles que parece ser?
Obtengamos algunos datos empíricos. Creé imágenes imgur de los siguientes B, M y W. Luego analicé su recuento de píxeles (ver más abajo), aquí están los resultados:
B: 114 píxeles
M: 150 píxeles
W: 157 píxeles
Así es como los introduje en el lienzo y analicé los datos de píxeles sin procesar de las imágenes.
fuente
¿Quieres saber el glifo más largo real , no solo adivinar?
Y no solo estoy hablando de letras, dígitos y símbolos comunes (!, @, Etc.). Me refiero al glifo más largo de todos los 32.834 caracteres de UTF-16.
Así que comencé con la respuesta de @NK que tenía una solución programática e hice algunas modificaciones leves :
Después de ejecutar esto y esperar (y esperar), da la salida
ௌ won
.Y ahí lo tienes, ¡el personaje más largo de UTF-32! Tenga en cuenta que en algunas fuentes el glifo más largo es ﷽, pero las otras fuentes (especialmente las monoespaciales) se superponen a los caracteres, al igual que con la fuente que el programa tiene en cuenta.
fuente
Depende de la fuente. El cero cruzado, por ejemplo, ocupa mucho más que uno normal.
Pero si uno pudiera adivinar, iría con X o B.
fuente