다중 유니 코드 범위에 대해 다른 크기와 글꼴 무게의 "Noto Sans Mono"글꼴의 미리 재실행 문자를 제공합니다. 이 상자는 no_std 이며 할당 또는 부동 소수점 작업이 필요하지 않습니다. "소프트 플로트"만 사용할 수있는 경우 커널 및 부트 로더에 유용합니다. 엄격하게 말하면,이 상자는 기본 비트 맵 글꼴 이상입니다. 각 픽셀을 바이트로 인코딩하고 비트가 아닌 바이트로 인코딩하기 때문에 화면에서 훨씬 더 좋은 결과를 초래합니다.
no_std , 제로 할당, 부동 소수점 작업 없음
Contributing.md를 확인하십시오.
레거시 (8x8) 비트 맵 글꼴은 일반적으로 각 기호가 8 비트로 인코딩되는 글꼴을 나타냅니다. 바이트 ( 0b00110000 )의 것은 "픽셀 ON"을 의미하고 Zeroes '는 "Pixel Off"를 의미합니다. 그러나 내 글은 실제로 각 픽셀의 강도를 0에서 255까지 바이트로 인코딩합니다. 따라서 레거시 비트 맵 글꼴보다 크기가 적지 만 훨씬 더 좋아 보입니다. 부팅 프로세스와 같은 저수준 컨텍스트에서 사전 상실 된 글꼴/글꼴 렌더링에 대해 이야기 할 때이 용어가 사용되고 알려져 있기 때문에 여전히 비트 맵 글꼴이라는 용어를 사용합니다.
프레임 버퍼에 인쇄하려고하고 부트 로더 또는 커널을 개발하는 경우 일반적으로 FPU를 활성화하고 플로팅 포인트 명령어를 자제하고 싶지 않습니다 (즉, 소프트 플로트 만 사용). 내 상자는 그러한 시나리오에서 화면에 캐릭터를 멋지게 인쇄하는 좋은 옵션입니다. TTF 글꼴의 멋진 라이브 글꼴 렌더링은 많은 부동 소수점 작업에 크게 의존하기 때문에 저수준 바이너리 내부에서는 최적이 아닙니다. 레거시 8x8 비트 맵 글꼴은 화면에 인쇄되면 추악합니다. noto_sans_mono_bitmap 매우 멋진 안티 앨리어싱으로 멋진 대체품으로 볼 수 있습니다.
플로팅 포인트 운영에 대한 표준 환경이나 지원이있는 경우 상자를 사용하지 않고 상자 fontdue 과 일부 TTF 글꼴로 글꼴을 직접 래스터 화하는 것이 좋습니다.
use noto_sans_mono_bitmap :: { get_raster , get_raster_width , FontWeight , RasterHeight } ;
// Minimal example.
fn main ( ) {
let width = get_raster_width ( FontWeight :: Regular , RasterHeight :: Size16 ) ;
println ! (
"Each char of the mono-spaced font will be {}px in width if the font
weight={:?} and the bitmap height={}" ,
width ,
FontWeight :: Regular ,
RasterHeight :: Size16 . val ( )
) ;
let char_raster =
get_raster ( 'A' , FontWeight :: Regular , RasterHeight :: Size16 ) . expect ( "unsupported char" ) ;
println ! ( "{:?}" , char_raster ) ;
for ( row_i , row ) in char_raster . raster ( ) . iter ( ) . enumerate ( ) {
for ( col_i , pixel ) in row . iter ( ) . enumerate ( ) {
println ! ( "[{:02}][{:02}]: {:03}" , row_i , col_i , pixel ) ;
}
}
} external/check-size 상자는이 라이브러리를 이진에 정적으로 컴파일하는 오버 헤드에 대한 통찰력을 제공합니다.
기본적으로 가능한 기능 중 합리적인 하위 집합 만 포함됩니다. 원시 크레이트 크기의 크기는 몇 가지 크기이지만, 편집 및 관련없는 부품 (예 : 크기 14, 일반 글꼴, ASCII 만 ascii)을 버린 후 오버 헤드는 이진 크기로 120 킬로미터 미만이어야합니다. 그러나 all 기능을 사용하더라도 코드에 따라 컴파일러는 도달 할 수 없거나 사용하지 않는 코드 경로를 안정적으로 폐기 할 수 있습니다. 그럼에도 불구하고 필요한 것보다 더 이상 기능을 포함하지 않는 것이 좋습니다.
바이너리 내부에 포함 된 모든 기능과 컴파일러의 폐기없이 5 개 이상의 메모리 소비를 기대할 수 있습니다. 그러나이를 위해서는 다른 크기와 글꼴 무게를 동시에 사용하고 모든 유니 코드 범위를 사용하는 경우가 필요하지 않습니다.
$ cargo run --example show_chars_in_window
{ä, ö, ü, �} 와 같은 특수 숯을 사용하려면 예에서 사용할 수 있습니다.
$ cargo run --example show_chars_in_window --features all
� . :레이스터 화는 멋진 글꼴 크레이트로 수행되었습니다. 원래 저자에게 감사합니다!
저장소의 라이센스 파일을 참조하십시오.
녹 안정적인 1.56.1.